中国房价最高的城市:C# 事件传参问题(高手区)

来源:百度文库 编辑:神马品牌网 时间:2024/05/11 01:38:10
DataGrid dataGrid = new DataGrid();

Button buttonOk = new Button();
buttonOk.Text = "&O.确定";
buttonOk.Width = 80;
buttonOk.Height = 25 ;
buttonOk.Click += new EventHandler(buttonOk_Click);

private void buttonOk_Click(object sender, System.EventArgs e)
{
操作上文DataGrid控件
}

不知大家看明白了不?
我的意思是动态定义一个按钮,通过按钮Click事件处理函数buttonOK()来处理上文定义的DataGrid控件。
也就是如何将DataGrid控件传入下文的buttonOK()事件处理函数中?

大家好好理解一下吧,应该是一个应用较为广泛的问题,谢谢大家。
不在同一个namespace中!这不是具体问题,而是我举个例子问的。
其实可以通过全局变量实现。
但我想研究这个问题,就是如何传入给事件处理程序中的(sender, e) 这两个参数。

Button点击事件有两个参数
(object sender, EventArgs e)

其中sender是事件的发生源,一般是不用来传递参数的,
也无法用来传递引用参数,但可以通过一些属性来传递
一些非引用参数.

e 是一个EventArgs类的子类:
ToolBarButtonClickEventArgs
这个类只有一个属性Button,这个属性返回一个对像
是ToolBarButton,这个对像唯一能用于传递参数的
一个属性是Container,但这也不一定行,因为ToolBarButton类是Button类的父类,事件发生时,系统
只是把Button对像转换成其父类,并在其属性上添加一些
信息而已,所以希望通过e来传递参数可能比较难.

与Button相似的一个是linkLable,linkLable类的links
属性可以添加link类,link类的属性linkData是一个用户
可以传递的Object对像.当linkLable被点击时,link类对像会传递给事件参数e,这样就可以通过e来获得在点击事件外对link设置的参数, 从而对其进行处理.

所以linkLable不但可以实现BUTTON的功能,而且功能更
强,只是界面不一样而已.

定义一个方法,接受函数,在按扭点下后,调用这个方法。

在同一个Namespace里可以直接调用吧。