B窗体有bt1,bt2,bt3,bt4.
如何在主窗体中判断那个BUTTON被触发。
如何在主窗体中判断那个BUTTON被触发。
解决方案 »
- C#类似于QQ提示输入登入密码的样式怎么弄,不用弹messagebox!在线等
- 用C#设置office2007 PPT中文本框的字体为“微软雅黑”无效
- 一个关于部署的错误,高手们应该都遇到过吧?
- 怎样在一个window窗体中的菜单选项单击时弹出另一个窗体
- ■■现金100元奖励!求win2003server登陆窗口图片修改方法!!
- 高手请教阿!如何建立系统构架??
- ~~~~~~~~大家一起来:请各位谈谈您认为目前IT业界最流行什么技术?~~~~~~~~~
- 求解大神(游戏设计问题)
- 一个大而策手的问题,各位帮一下
- 解决概念问题,关于soap,消息,socket
- 如何提高并发处理速度?
- C#如何实现word预览
你应该理解事件驱动的概念
而不是轮询是B的按钮被点下的时候触发事件,然后事件里写代码通知窗体A执行某个方法
而不是在窗体A中不断的去检测窗体B中是否有按钮被按下
public event DelegateSetText SetTextEvent; // 定义事件
/// <summary>
/// 触发事件
/// </summary>
/// <param name="value"></param>
private void RaiseEvent(string value)
{
if (SetTextEvent != null)
SetTextEvent(value);
} /// <summary>
/// 发送
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
// this.textBox1.Text
RaiseEvent("点击了:" + (sender as Button).Text); // 显示点击button的text
}窗体A: private void button1_Click(object sender, EventArgs e)
{
// 显示子窗口
TargetForm frm = new TargetForm();
frm.SetTextEvent += new TargetForm.DelegateSetText(frm_SetTextEvent);
frm.Show();
} void frm_SetTextEvent(string value)
{
this.textBox1.Text = value;
}
简单的说就是当B窗口按钮点击时,通知A窗口
要实现这个功能就得用委托
也就是在B窗口申明一个委托,再用event封装一个该委托变量。 那么A窗口再将一个方法注册到该事件上,B窗口内当按钮点击时调用该事件则会触发A窗口注册上的方法当然其实更简单的是将A窗口传递给B窗口,然后点击按钮时B窗口直接a.XX() ,但这就是强依赖了不好
方法2 BUTTON作为参数传个B
方法3 B的事件函数注册到A的BUTTON点击事件上
方法4 读取堆栈的信息,解析信息获取BUTTON
使用事件处理是正道