C#中怎么在本窗体中关闭别的窗体

2025-03-04 11:52:42
推荐回答(5个)
回答1:

最安全的做法是委托,委托就不需要找对象。比如我想再B窗体里面关闭C窗体,他们之间都找不到对象,对象在A里面实例化的,怎么办?委托就要用上了。
在B里面写委托主体申明,然后赋予事件主体。
public delegete void close;
public static event close close_c;
B的按钮事件中加入:
close_c();
C的窗体启动事件中订阅事件:
B.close_c+=()=>{
Enveroment.Exit(0);
};

回答2:

B是通过点击A上的按钮出来的,那就好办了,你在B的构造函数里增加一个Form参数,在A里面new
B窗体的时候把 A自己的窗体传过去,然后B里面就能关闭A了

B中的代码

Private Form _A=null;
public B(Form A)
{
this._A=A
}

private void Close()
{
_A.Close();
}

A 中的代码
B b = new B(this);
b.Show()

回答3:

  一般窗体都是一个对象。
  比如一个winform,窗体。打开它的时候就是创建对象的过程,winform duixiang =new winform(a,b).
  这个时候如果要关闭这个窗体,必须要得到这个窗体的对象,直接关闭对象,这里的例子就是:duixiang.close()
  所以C#关闭别的窗体的关键在于获取这个窗体的对象,可以作为参数传递过来也好,使用全局静态对象应用也好,只要找到了,然后关闭就可以了。

回答4:

B是通过点击A上的按钮出来的,那就好办了,你在B的构造函数里增加一个Form参数,在A里面new
B窗体的时候把 A自己的窗体传过去,然后B里面就能关闭A了

B中的代码

Private Form _A=null;
public B(Form A)
{
this._A=A
}

private void Close()
{
_A.Close();
}

A 中的代码
B b = new B(this);
b.Show()
正如我所想

回答5:

如果是在一个程序内的,只要把窗体归集在全局变量,你想关哪个只要操作变量是最方便的。如果跨程序,则需要钩子 。如果跨线程,需要通道