Compact Framework中的自定义控件

时间:2015-04-30 03:05:33

标签: c# visual-studio-2008 compact-framework windows-applications

我制作了一个自定义控件,其中有一个按钮。 现在点击此按钮,我想将一些数据发送到显示自定义控件并显示数据的父表单。

如何将数据从customcontrol.cs发送到parentForm.cs?

2 个答案:

答案 0 :(得分:1)

通常控制火灾事件以通知父级。这样你的控件就不需要了解它的父级了。数据可以作为属性公开,或者(如果数据与事件相关)作为事件参数公开。

现有的例子是:

  • 控件的MouseDown事件,其中MouseEventArgs包含"鼠标的位置"
  • TextChanged的{​​{1}}事件,其中没有数据作为参数,但让父母检查TextBox属性

答案 1 :(得分:1)

您需要编写委托,事件和事件处理程序。在自定义控件类中定义委托和事件,并在主代码中添加一个事件处理程序,该事件处理程序在自定义控件中定义的事件中显示。

互联网上已有很多例子。

将其添加到您的自定义控制代码中:

public class MyEventArgs : EventArgs
{
    public string msg="";
    public MyEventArgs(string s){
       msg=s;
    }
}
// Delegate declaration. 
public delegate void MyEventHandler(object sender, MyEventArgs e);
public event MyEventHandler myHandler;
protected virtual void OnUpdate(MyEventArgs e)
{
    MyEventHandler handler = myHandler;
    if (handler != null)
    {
       // Invokes the delegates.
       handler(this, e);
    }
}

如果您需要通知订阅者您自定义控件中的某些事件,请调用OnUpdate函数     ...     //更新订阅者     OnUpdate(新的MyEventArgs(" Hello"));     //以上将调用事件订阅者

主代码中的

...
//global?
CustomControl myCC=new CustomControl();
//add after InitializeComponents?
myCC+=new myEventHandler(myEventhandlerMethod);
...
//need to add a new myEventhandlerMethod that matches the delegate definition
public void myEventHandlerMethod(object sender, MyEventArgs e){
   //here you get when the custom control fires the event in OnUpdate...
}

我希望我描述尽可能简单。 来源:https://msdn.microsoft.com/en-us/library/9aackb16%28v=vs.90%29.aspx