C#怎样把一个窗体的自定义事件设成全局都可以调用的事件

不能使用static的!... 不能使用static的! 展开
 我来答
ajlija
2011-01-31 · TA获得超过939个赞
知道大有可为答主
回答量:1118
采纳率:0%
帮助的人:1069万
展开全部
方法1:使用窗体的Owner属性
步骤 1)在窗体A呼叫窗体B之前,将窗体A赋予窗体B,即 fasSet.Owner = this;表示fasSet(窗体B)拥有窗体A,如下面代码:
/// <summary>
/// 呼叫窗体B
/// </summary>
void WakeUpForm()
{
FmAlarmSet fasSet = new FmAlarmSet();
//将本窗体设为“设置窗体”所有
fasSet.Owner = this;
fasSet.ShowDialog();
}
步骤 2)在窗体B中实例化窗体A,这样窗体B就可以操作窗体A了。如下代码
//得到传入的FmAlarm窗体值
FmAlarm fa = (FmAlarm)this.Owner;

//循环查找FormA中的控件,然后变更控件中的值
foreach (Control con in fa.Controls)
{
if (con.Name == "txtAlarmContent")
{
((TextBox)con).Text = txtAlarmContent.Text;
}
}

方法2:将窗体A作为控件传入窗体B
步骤:1)修改窗B的构造函数,加入参数,类型为窗体A
/// <summary>
/// 窗体A变量,定义为全局变量,便於调用
/// </summary>
FmAlarm fa = null;

public FmAlarmSet(FmAlarm FmA)
{
InitializeComponent();
fa = FmA;
}
步骤:2)在窗体 A呼叫窗体方法的参数中加入自己,把自己传给窗体B。
/// <summary>
/// 呼叫窗体B
/// </summary>
void WakeUpForm()
{
FmAlarmSet fasSet = new FmAlarmSet(this);
fasSet.ShowDialog();
}
步骤:3)在需要地方调用窗体A即可,如下代码,改变窗体A中TextBox中的值。
//循环查找FormA中的控件,然后变更控件中的值
foreach (Control con in fa.Controls)
{
if (con.Name == "txtAlarmContent")
{
((TextBox)con).Text = txtAlarmContent.Text;
}
}
wkishappy
2011-01-30 · TA获得超过112个赞
知道答主
回答量:52
采纳率:0%
帮助的人:50万
展开全部
用public static修饰即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式