Итак, я создал собственный класс MyToolBar, который унаследован от BindingNavigator. Мне удалось добавить этот класс в ToolBox также. Теперь я могу (я полагаю) добавить свою панель инструментов во многие формы и изменить код панели инструментов только в одном месте.
Я пытался добавить EventHadler к моей пользовательской кнопке. Это не сработало, поэтому я попытался добавить хэдлеры к кнопкам по умолчанию (кнопки типа 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);
}
}