我有一个为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")',它完美无缺。然后,我怎样才能使各种形式的按钮可以点击,每个按钮都实现自己的点击。
答案 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"); });
}