我有一个MainForm窗口,该用户可以按3个按钮。每个按钮都会启动新的表单,用户可以在其中执行他喜欢的任何操作(例如耗时的数据库调用等)。因此,我决定将每种形式放入其自己的线程中:
private Thread subThreadForRaportyKlienta;
private Thread subThreadForGeneratorPrzelewow;
private Thread subThreadForRaporty;
private void pokazOplatyGlobalne() {
ZarzadzajOplatamiGlobalneDzp varGui = new ZarzadzajOplatamiGlobalneDzp();
varGui.ShowDialog();
}
private void pokazRaportyKlienta() {
RaportyDzpKlient varGui = new RaportyDzpKlient();
varGui.ShowDialog();
}
private void pokazRaportyWewnetrzne() {
RaportyDzp varGui = new RaportyDzp();
varGui.ShowDialog();
}
private void pokazGeneratorPrzelewow() {
ZarzadzajPrzelewamiDzp varGui = new ZarzadzajPrzelewamiDzp();
varGui.ShowDialog();
}
private void toolStripMenuGeneratorPrzelewow_Click(object sender, EventArgs e) {
if (subThreadForGeneratorPrzelewow == null || subThreadForGeneratorPrzelewow.IsAlive == false) {
subThreadForGeneratorPrzelewow = new Thread(pokazGeneratorPrzelewow);
subThreadForGeneratorPrzelewow.Start();
} else {
}
}
private void toolStripMenuGeneratorRaportow_Click(object sender, EventArgs e) {
if (subThreadForRaporty == null || subThreadForRaporty.IsAlive == false) {
subThreadForRaporty = new Thread(pokazRaportyWewnetrzne);
subThreadForRaporty.Start();
} else {
}
}
private void toolStripMenuGeneratorRaportowDlaKlienta_Click(object sender, EventArgs e)
{
if (subThreadForRaportyKlienta == null || subThreadForRaportyKlienta.IsAlive == false) {
subThreadForRaportyKlienta = new Thread(pokazRaportyKlienta);
subThreadForRaportyKlienta.Start();
} else {
}
}
我有几个问题,希望有人能解释一下:
Show()
而不是ShowDialog()
时,窗口仅闪烁一秒钟,并且从不显示。两者之间的实际区别是什么?为什么会发生呢? ShowDialog
时,一切似乎都正常,但我注意到并不是所有内容都正确地填入了gui的其中一个(即使您在Form_Load()
中有3个简单的添加项,一个listView仍然为空。在其他两个GUI中也可以正常工作,我也可以在这些Forms中执行多个任务,也可以在后台更新这些表单(从Forms方法内部),为什么这个表单会有所不同?最佳答案
区别在于Modal and Modeless Windows Forms。
Show()
方法用于此目的
关于c# - 启动多个gui(WinForms)线程,以便它们可以与C#中的一个主gui分开工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2359493/