1

我正在尝试使用一些额外的 ToolStripButton (和)创建一个自定义BindingNavigator控件。 ToolStripButton 已添加到 BindingNavigator,但我无法选择这个新的 ToolStripButton,例如,在其 Click 事件处理程序中添加代码。实际上,ToolStripButtons 显示为已锁定EditExportToExcel

这是我的代码和应该描述问题的图像:

using System.Windows.Forms;

public class BindingNavigator : System.Windows.Forms.BindingNavigator
{
    public ToolStripButton btnEdit;
    public ToolStripButton btnExcelExport;

    public BindingNavigator()
    {
        this.LayoutCompleted += BindingNavigator_LayoutCompleted;
    }

    public void BindingNavigator_LayoutCompleted(object sender, System.EventArgs e)
    {
        if (this.Items.Contains(btnEdit))
            return;
        if (this.Items.Count >= 11)
        {
            btnEdit = new ToolStripButton();
            btnEdit.Image = global::BaseControls.Properties.Resources.Edit___16x16;
            btnEdit.Name = "btnEdit";
            this.Items.Insert(10, btnEdit);

            this.Items.Add(new ToolStripSeparator());

            btnExcelExport = new ToolStripButton();
            btnExcelExport.Image = global::BaseControls.Properties.Resources.Excel___16x16;
            btnExcelExport.Name = "btnExcelExport";
            this.Items.Insert(13, btnExcelExport);
        }
    }
}

我的绑定导航器

4

1 回答 1

0

BindingNavigator类有一个专用的设计器BindingNavigatorDesignerToolStripDesigner.
Designer 调用公共虚拟AddStandardItems()方法,然后在将 BindingNavigator 添加到 Form 时由 Form Designer 调用该方法。

要使您的按钮正常工作,请在自定义类中覆盖此方法并在此处添加新按钮。
现在您的 ToolStripButtons 在表单设计器中被序列化,如果您双击您的自定义按钮之一,一个Click处理程序将添加到表单中。

您可以在 . 净源代码

在派生类中重写此方法以定义附加或替代标准项。为确保对派生类的最佳设计时支持,请确保每个项目在其 Name 属性中都有一个有意义的值。在设计时,这将用于为相应的成员变量生成一个唯一的名称。然后将更新项目的 Name 属性以匹配赋予成员变量的名称。

BindingNavigator 自定义
如您所见,现在按钮功能齐全

我建议您像这样修改您的自定义 BindingNavigator:

► 不要命名您的自定义控件BindingNavigator

public class BindingNavigatorEx : BindingNavigator
{
    private ToolStripItem btnEdit;
    private ToolStripItem btnExcelExport;

    public BindingNavigatorEx() { }

    public override void AddStandardItems()
    {
        base.AddStandardItems();
        this.Items.Add(new ToolStripSeparator());

        btnEdit = new ToolStripButton() {
            Image = Properties.Resources.Edit___16x16,
            Name = "bindingNavigatorButtonEdit",
            DisplayStyle = ToolStripItemDisplayStyle.Image
        };
        this.Items.Add(btnEdit);

        btnExcelExport = new ToolStripButton() {
            Image = Properties.Resources.Excel___16x16,
            Name = "bindingNavigatorButtonExcelExport",
            DisplayStyle = ToolStripItemDisplayStyle.Image
        };
        this.Items.Add(btnExcelExport);
    }
}
于 2020-06-21T12:51:13.627 回答