因此,我创建了一个自BindingNavigator继承的自定义类MyToolBar。我也设法将此类添加到ToolBox中。现在,我可以(我想)将我的工具栏添加到许多表单上,并且只在一个位置更改工具栏的代码。
我试图将EventHadler添加到我的自定义按钮中。它没有用,所以我也尝试将hadlers添加到默认按钮(MoveNext,AddNew等按钮)中。但是似乎编译器看不到我的事件,尽管在调试时有一个按钮记录了有关我的eventHandler的记录。 (如果将此类放在Form1.cs中,但不在单独的CS文件中,则我的处理程序也可以工作)
MyToolBar.cs如下:
public class MyToolBar : BindingNavigator
{
private ToolStripButton DataGrid_ToolstripMoveNext = new ToolStripButton();
private ToolStripButton toolStripButton1 = new ToolStripButton();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
public override void AddStandardItems()
{
this.Items.AddRange(new ToolStripItem[] { DataGrid_ToolstripMoveNext, toolStripButton1 });
}
private void OnClick(object sender, EventArgs e)
{
// here is some code that doesn't execute
}
public MyToolBar()
{
// Default button
DataGrid_ToolstripMoveNext.Name = "DataGrid_ToolstripMoveNext";
DataGrid_ToolstripMoveNext.Text = "Move next";
DataGrid_ToolstripMoveNext.MouseHover += new EventHandler((sender, e) => //code that doesn't work either);
// My custom button
toolStripButton1.Name = "DataGrid_MyButton";
toolStripButton1.Text = "My Button2";
toolStripButton1.MouseHover += new EventHandler(OnClick);
MoveNextItem = DataGrid_ToolstripMoveNext;
MoveNextItem.Enabled = true;
toolStripButton1.Enabled = true;
}
private void InitializeComponent()
{
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
this.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
this.ResumeLayout(false);
}
}