以编程方式添加工具条按钮并附加单击事件

时间:2017-12-21 13:15:39

标签: c# eventhandler toolstripbutton

我有一个为C1Editor创建工具条按钮的类,它工作正常,因为命令是内置的。大约有五种形式使用此类来创建工具条按钮。我正在添加一个自定义按钮,这需要一个点击事件,这是我迷路的地方。我需要你的帮助人员。类代码如下:

public class AlrFrontEndToolStrip : C1EditorToolStripBase
{
    protected override void OnInitialize()
    {
        base.OnInitialize();
        AddButton(CommandButton.Copy);
        AddButton(CommandButton.Paste);
        Items.Add(new ToolStripSeparator());
        AddButton(CommandButton.SelectAll);
        AddButton(CommandButton.Find);
        Items.Add(new ToolStripSeparator());
        AddButton(CommandButton.Print);
        Items.Add(new ToolStripSeparator());
        Items.Add(new ToolStripButton().Text = "View Judgment", Properties.Resources.Find_VS, onClick: EventHandler.CreateDelegate( "Push");
    }
}

如果我删除以下位:' onClick:EventHandler.CreateDelegate(" Push")',它完美无缺。然后,我怎样才能使各种形式的按钮可以点击,每个按钮都实现自己的点击。

1 个答案:

答案 0 :(得分:1)

这是一个WPF风格的示例,您可以使用标准ToolStrip来完成它,但同样适用于您。此代码正在创建一个新控件,即添加了一个按钮的ToolStrip。它公开了BtnClickCommand属性,让您有机会使用Command

为Click事件提供处理程序
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.AutoDispatch)]
[System.Runtime.InteropServices.ComVisible(true)]
public class CustomToolstrip : ToolStrip
{
    public CustomToolstrip() : base()
    {
        InitializeComponent();
    }
    public void InitializeComponent()
    {
        var btn = new ToolStripButton()
        {
            Text = "Test Button"
        };

        btn.Click += BtnOnClick;
        Items.Add(btn);

    }

    private void BtnOnClick(object sender, EventArgs eventArgs)
    {
        if (BtnClickCommand.CanExecute(null))
        BtnClickCommand.Execute(null);
    }

    public ICommand BtnClickCommand { get; set; }
}

然后在表单中使用如下(假设控件名称为customToolstrip1):

    public Form1()
    {
        InitializeComponent();
        customToolstrip1.BtnClickCommand = new RelayCommand<object>(obj => { MessageBox.Show("Button clicked"); });
    }