0

我有一个为 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")',它会完美运行。那么我怎样才能使按钮以各种形式可点击,并且每个都实现自己的点击。

4

1 回答 1

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"); });
    }
于 2017-12-21T14:18:04.860 回答