C#代码触发事件

来源:百度知道 编辑:UC知道 时间:2024/06/08 01:35:22
我想问的是如何触发控件的事件,例如button控件可以通过调用Click方法触发点击事件
但是有的控件例如一个自定义控件没有Click方法,我怎么通过代码方式触发事件
是触发,而不是调用方法虽然直接调用处理函数可以,但是在我的工程里没办法这么用,因为那个自定义控件的处理函数我调不到
回:skynomadism
继承的方法没用,它里面的方法全是private的,继承也调不到
至于发送消息我正在研究

回:spearrain
我想的也是这样,但是不知道怎么写

回: feiyangqingyun
这个是别人写的button没有click事件可以注册

回:mozily
这个方法倒是可以,但是我窗体里要多次用到这个button
而且这个button是动态生成的,并不确定个数,总不能每一个都指定快捷键,而且不一定是用ALT可能就是按下数字键盘的1

我觉得你的目的应该是:
别人写的控件中内部实现了MouseDown事件的响应;
你希望使用其它代码来代替鼠标点击操作来发送这个消息。

WINAPI里的SendMessage值得试一试,不过具体代码我不是很清楚……

如果是为了达到按ALT键来触发DLL的click事件的话,完全可以这样处理:
添加一个按钮,给按钮设置个快捷键,例如:
button1.Text="OK(&O)";
这个button1的快捷键就是ALT+O;
现在把button1隐藏起来,不要visible=false,那样快捷键会失效,最好放在某个控件下面遮盖住。
一切OK了,在button1的Click事件里面触发你的DLL控件的click事件就可以了,这样按ALT+O相当于你的DLL控件的click事件当然也同时被触发。
=======
建议你将button和Dll控件绑定成一个控件使用,这样比较方便,button的所有属性暴露出来,给Dll控件提供了方便。
===========================
如果是你说的快捷键可能是一个简单的数字,觉得实现起来很麻烦,找找看有没有偶现成的控件

你说的还不够清楚,我认为,能触发就能调用.

如果这样的话,估计得通过传递消息来做了.
利用API发送一个消息给这个控件

你这种情况,通过委托几乎是不行的.
如果可以把button里的click用键盘触发,那就可以用同样的方法做到你的要求.好像很难.

还有一个方法,那就是你自己写一个控件继承自它的.然后在里面定义一个函数来调用它的事件.

[原创] C#委托(Delegate)事件(Event)应用详解

http://hi.baidu.com/jonnysuen/blog/