在另一个事件结束之前暂停事件



我有两个表单(Form1和Form2(。在Form1上是树视图控件和布尔变量YesNo,在Form2上是按钮。

我想做的是运行treeView1_NodeMouseDoubleClick,然后运行Form2,单击Form2上的按钮,然后将值变量YesNo设置为true。

但我被卡住了,因为treeView1_NodeMouseDoubleClick在Form2显示后一直在运行,我不知道如何停止,直到button1_Click事件结束。

从下面的代码,我想得到MessegeBox上有文本True。

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static bool YesNo { get; set; }
private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (treeView1.SelectedNode.Text == "GB")
{
Form2 f2 = new Form2();
f2.Show();
# how to stop this event until button1_Click is finish
MessageBox.Show(YesNo.ToString());
}
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form1.YesNo = true;            
}
}

代码中的第一个问题:没有"是否"任意if((运算符处的变量

修复方法如下:

更换您的:

if (treeView1.SelectedNode.Text == "GB")

签字人:

if (treeView1.SelectedNode.Text == "GB" && YesNo == false)

另一个问题:由于静态变量的高级保护,您不能从另一种形式调用静态变量,解决方法是:

删除";静态";变量中的变量类型

public static bool YesNo { get; set; }

以下是应该留下的:

public bool YesNo { get; set; }

第三个问题:如何尝试从Form1调用变量而不在Form2类中宣布Form1??通过不可见的服务器管道XD???

这是修复它的方法,就像你在Form1:中的活动中所做的那样

将其写入您的按钮1_点击Form2:中的事件

Form1 f1 = new Form1();
f1.YesNo = true;

应该是这样的:

private void button1_Click(object sender, EventArgs e)
{
Form1 f1 = new Form1();
f1.YesNo = true;
}

没有我写过的几个空白字段。

如果它有助于,请将我标记得更高

最新更新