帮朋友写一个工具,用.NET 2.0的Windows Form做的。菜单栏、工具栏以及界面上的Button的Enable和Disable不知道有什么好方法。自己创造了一种,也不知道合不合适,望大家指点。
主要有工具栏上的5个按钮和界面上的一个按钮,如下图,初始时候刷新和添加是Enable的,其他都是Disable,随情况的变化根据需要Enable或Disable。
代码我是这样写的:
[Flags]
enum ButtonState
...{
//bit位方式
RefreshButton = 0x0001,
SearchButton = 0x0002,
AddButton = 0x0004,
DelButton = 0x0008,
UpdateButton = 0x0010,
SourceImageButton = 0x0020
}
private ButtonState flags = new ButtonState();
public void SetButtonStates(int flags)
...{
this.flags = (ButtonState)Enum.Parse(typeof(ButtonState), flags.ToString());
refreshToolStripButton.Enabled = Convert.ToBoolean(this.flags & ButtonState.RefreshButton);
RefreshToolStripMenuItem.Enabled = refreshToolStripButton.Enabled;
refreshToolStripMenuItem1.Enabled = refreshToolStripButton.Enabled;
searchToolStripButton.Enabled = Convert.ToBoolean(this.flags & ButtonState.SearchButton);
SearchToolStripMenuItem.Enabled = searchToolStripButton.Enabled;
searchToolStripMenuItem1.Enabled = searchToolStripButton.Enabled;
addToolStripButton.Enabled = Convert.ToBoolean(this.flags & ButtonState.AddButton);
AddToolStripMenuItem.Enabled = addToolStripButton.Enabled;
addToolStripMenuItem1.Enabled = addToolStripButton.Enabled;
deleteToolStripButton.Enabled = Convert.ToBoolean(this.flags & ButtonState.DelButton);
DeleteToolStripMenuItem.Enabled = deleteToolStripButton.Enabled;
deleteToolStripMenuItem1.Enabled = deleteToolStripButton.Enabled;
updateToolStripButton.Enabled = Convert.ToBoolean(this.flags & ButtonState.UpdateButton);
UpdateToolStripMenuItem.Enabled = updateToolStripButton.Enabled;
updateToolStripMenuItem1.Enabled = updateToolStripButton.Enabled;
sourceImageButton.Enabled = Convert.ToBoolean(this.flags & ButtonState.SourceImageButton);
}
enum ButtonState
...{
//bit位方式
RefreshButton = 0x0001,
SearchButton = 0x0002,
AddButton = 0x0004,
DelButton = 0x0008,
UpdateButton = 0x0010,
SourceImageButton = 0x0020
}
private ButtonState flags = new ButtonState();
public void SetButtonStates(int flags)
...{
this.flags = (ButtonState)Enum.Parse(typeof(ButtonState), flags.ToString());
refreshToolStripButton.Enabled = Convert.ToBoolean(this.flags & ButtonState.RefreshButton);
RefreshToolStripMenuItem.Enabled = refreshToolStripButton.Enabled;
refreshToolStripMenuItem1.Enabled = refreshToolStripButton.Enabled;
searchToolStripButton.Enabled = Convert.ToBoolean(this.flags & ButtonState.SearchButton);
SearchToolStripMenuItem.Enabled = searchToolStripButton.Enabled;
searchToolStripMenuItem1.Enabled = searchToolStripButton.Enabled;
addToolStripButton.Enabled = Convert.ToBoolean(this.flags & ButtonState.AddButton);
AddToolStripMenuItem.Enabled = addToolStripButton.Enabled;
addToolStripMenuItem1.Enabled = addToolStripButton.Enabled;
deleteToolStripButton.Enabled = Convert.ToBoolean(this.flags & ButtonState.DelButton);
DeleteToolStripMenuItem.Enabled = deleteToolStripButton.Enabled;
deleteToolStripMenuItem1.Enabled = deleteToolStripButton.Enabled;
updateToolStripButton.Enabled = Convert.ToBoolean(this.flags & ButtonState.UpdateButton);
UpdateToolStripMenuItem.Enabled = updateToolStripButton.Enabled;
updateToolStripMenuItem1.Enabled = updateToolStripButton.Enabled;
sourceImageButton.Enabled = Convert.ToBoolean(this.flags & ButtonState.SourceImageButton);
}
需要改变状态的时候,调用SetButtonState,按照参数的bit位是0还是1来Enable/Disable空间。大家觉得这样的方法好吗?或者您有更好的方法,望不吝赐教。谢谢!