Как добавить новый eventHandler к моей кнопке в пользовательском BindingNavigator? - PullRequest
0 голосов
/ 01 мая 2019

Итак, я создал собственный класс 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);
    }
}
...