今天在做一个小软件的时候,遇到了一个问题,
from1功能:打开语言修改页面
from2功能:设置所选语言,同时更改from1中的语言
本来想着两个FROM能否通过文件在多线程情况下来检测设置内容的变化,但是长时间暂用线程会导致CPU利用率底下,而且通过文件、管道、SOCKET等方式在操作系统中,算是进程通信的概念,而在这里,同一个进程内没有必要使用这种方式来进行通信。
解决方法:
from2 新增构造函数,利用函数重载,设置一个参数为From类型的变量,同时在from2的类中设置一个私有变量接收FROM1打开FROM2时传递的this参数
from1传递本身给FROM2
由于from1本身有很多label,我们通过设计器把label的属性改为public
from2通过构造函数获取了from1后, 直接修改设计器label的值。
label检测label_change_text事件直接修改from1中的数据。
from2重要代码
private Form1 mainForm = null;
public langset(Form callingForm)
{
mainForm = callingForm as Form1;
InitializeComponent();
}
//修改代码:
//this.mainForm.textBox1.Text = "666";
from1重要代码
Form lang_set_from = new langset(this);
lang_set_from.Show();
//事件处理
private string change_flag;
private void textBox1_TextChanged(object sender, EventArgs e)
{
//........................
}
设计器修改
public System.Windows.Forms.TextBox textBox1;