我有两个表单(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;
}
没有我写过的几个空白字段。
如果它有助于,请将我标记得更高