我想选择应用程序的形式以在其中编辑文本框的设置。我曾经Form.ActiveForm
为此。当窗体处于前台时,这种方法效果很好,但是当未选中它时,它将不再起作用。有没有办法让应用程序保持当前状态,即使它在后台?
编辑:这是一些代码:
var form = Form.ActiveForm as MainForm;
if (form != null)
{
form.txtChatOutput.Text += p.Data[0] + "\r\n";
}
编辑2:
我找到了一个简单的解决方案。声明一个变量形式myForm;在类中以及在窗体的Shown事件中,将其设置为Form.ActiveForm。
public partial class Form1 : Form
{
Form myForm;
....
private void Form1_Shown(object sender, EventArgs e)
{
myForm = Form.ActiveForm;
}
}
然后,即使不再选择它,也可以使用myForm访问您的表单。
尽管提供的方法Edit 2
可以使用,但还有更直接的方法。
public partial class Form2 : Form
{
Form1 mainFrm;
public Form2(Form1 frm)
{
InitializeComponent();
mainFrm = frm;
}
...
}
更改“子”表单的构造函数,以使用arg来指示所有者/父表单或主表单,并将其存储为var类。对始终必须告知其父/主表单的表单执行此操作。要同时使用两种形式,只需将以上内容添加为重载的ctor。使用它:
using (Form2 frm = new Form2(this) )
{
frm.ShowDialog();
}
如果/当您的应用是类驱动而非表单驱动的,则可以Main
通过将主表单引用传递给构造函数中的类来执行类似的操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句