我有2种形式:Form1和Form2。在2种形式之间传递变量,多线程C#
Form1包含一个按钮来调用Form2并在另一个线程上运行它。
Form2包含3个复选框。当用户点击添加按钮时,它会生成一个字符串。
我的问题是如何将字符串传递给Form1然后将其添加到richtextbox?
谢谢。
Form1中
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
namespace PassingData2Forms
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void call_form_2()
{
for (int i = 0; i<10; i++) {
Form2 inst_form2 = new Form2();
inst_form2.ShowDialog();
}
}
private void f1_but_01_Click(object sender, EventArgs e)
{
Thread extra_thread_01 = new Thread(() => call_form_2());
extra_thread_01.Start();
}
}
}
窗体2
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PassingData2Forms
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
Close();
}
private string clean_string(string process_string)
{
process_string = process_string.Replace(",,", ",");
process_string = process_string.Trim(new char[] {','});
return process_string;
}
private void button1_Click(object sender, EventArgs e)
{
string[] selected_array = new string[3];
if (checkBox1.Checked == true)
{
selected_array[0] = "Summer";
}
if (checkBox2.Checked == true)
{
selected_array[1] = "Spring";
}
if (checkBox3.Checked == true)
{
selected_array[2] = "Fall";
}
string selected_string = clean_string(string.Join(",", selected_array));
//---------------------------------------------------------------
// How can I pass "selected_string" to RichTextBox in Form1 here?
//---------------------------------------------------------------
Close();
}
}
}
你能解释为什么你试图在另一个线程中运行你的第二个表单吗? – Steve
@Steve因为这只是一个示例,我试图尽可能简化。我有一项繁重的任务需要大量的时间来处理,并且必须在不同的线程上运行以避免GUI冻结。如果我能找到这个示例的解决方案,我可以将它应用于我的真实应用程序。 –
Form2必然是一种形式或只是一些后台线程?请参阅http://stackoverflow.com/questions/661561/how-to-update-the-gui-from-another-thread-in-c –