[DefaultEvent("OnError")] //<--- class My : Component { public event EventHandler OnError; }DefaultEventAttribute告诉设计器,该类的默认事件是OnError,设计器就可以在双击组件的时候,自动生成相应代码。
你全局搜索saveAsMenuItem_Click,看在哪里订阅了。
private void saveAsMenuItem_Click(object sender, System.EventArgs e) { if (CurrentActiveDocumentLoaderType == LoaderType.NoLoader) { MessageBox.Show("Cannot persist document created without loaders"); return; } if (CurrentActiveDocumentLoaderType == LoaderType.CodeDomDesignerLoader) { MessageBox.Show("Cannot persist document created using CodeDomDesignerLoader"); return; } HostControl currentHostControl = CurrentDocumentsHostControl; ((BasicHostLoader)currentHostControl.HostSurface.Loader).Save(true); }
有没有人对这块了解过? 我研究的是基于sharpdevelop的一个开源软件,DesignerHost,我能实现双击添加事件,并且初始化自动加进去了this.button1.Click += new System.EventHandler(this.handler_button1_Click); 但是事件方法没有加进去运行时找不到Button1_Click定义。
[DefaultEvent("OnError")] //<---
class My : Component
{
public event EventHandler OnError;
}DefaultEventAttribute告诉设计器,该类的默认事件是OnError,设计器就可以在双击组件的时候,自动生成相应代码。
private void saveAsMenuItem_Click(object sender, System.EventArgs e)
{
if (CurrentActiveDocumentLoaderType == LoaderType.NoLoader)
{
MessageBox.Show("Cannot persist document created without loaders");
return;
} if (CurrentActiveDocumentLoaderType == LoaderType.CodeDomDesignerLoader)
{
MessageBox.Show("Cannot persist document created using CodeDomDesignerLoader");
return;
} HostControl currentHostControl = CurrentDocumentsHostControl;
((BasicHostLoader)currentHostControl.HostSurface.Loader).Save(true);
}
我研究的是基于sharpdevelop的一个开源软件,DesignerHost,我能实现双击添加事件,并且初始化自动加进去了this.button1.Click += new System.EventHandler(this.handler_button1_Click);
但是事件方法没有加进去运行时找不到Button1_Click定义。
saveAsMenuItem_Click这是一个例子,其中一个控件,所有控件都有这个问题。
//这个一般在designer.cs 文件里。但你自己添加也没问题。
this.saveAsMenuItem.Click += new System.EventHandler(this.saveAsMenuItem_Click);
private void saveAsMenuItem_Click(object sender, System.EventArgs e)
{
}第二个层次:点击按钮,添加上面的代码。
这个基本有 VS 实现,通过对 Button的众多 Atribute的解析,然后定义对应的行为。