已经多次询问过可比较的问题,但我没有得到我的问题的线索:我有一个“父”Form = Form1,另一个表格“F5”的实例如下:
namespace MyNameSpace
{
public partial class Form1 : Form
{
F5_Interactive F5 = new F5_Interactive();
public Form1()
{
InitializeComponent();
}
....
我通过菜单打开F5 - 点击这样:
public bool IsFormOpen(Type formType)
{
foreach (Form form in Application.OpenForms)
if (form.GetType().Name == "F5_Interactive")
return true;
return false;
}
private void Interactive_Click(object sender, EventArgs e)
{
F5_Interactive F5 = new F5_Interactive();
if(!IsFormOpen(typeof (F5_Interactive)))
F5.Show();
}
F5_Interactive意味着一个RichTextBox,我要向其中添加来自不同类的消息。其中一个类是Form1,其中包含一个按钮:
private void button1_Click(object sender, EventArgs e)
{
F5_Interactive F5 = new F5_Interactive();
F5.AppendTextBox("bla");
}
回到我所拥有的F5_Interactive:
public delegate void AppendTextBoxCallback(string text);
public void AppendTextBox(string text)
{
if (richTextBox1_IB.InvokeRequired)
{
MessageBox.Show("RI");
AppendTextBoxCallback CallbackDelegate = new AppendTextBoxCallback(AppendTextBox);
richTextBox1_IB.Invoke(CallbackDelegate, new object[] { richTextBox1_IB });
// Alternative:
//richTextBox1_IB.Invoke(new Action(() => { richTextBox1_IB.AppendText(text + "\r\n"); }));
}
else
{
MessageBox.Show(" No RI");
richTextBox1_IB.AppendText(text + "\r\n");
}
}
我没有达到“调用询问”的状态。这似乎是因为我没有回到F5_Interactive的初始实例。如果我从同一个类调用方法AppendTextBox但是它可以使用不同的Thread。有什么建议?谢谢!