C# GET将变量更改为false
我正在努力学习如何在外接程序中工作。我知道在AddIn开发probrams不是个好主意,但我想这样做 我制作了一个用户控制窗口,它有两个参数(宽度和高度)。单击按钮时,这些参数将更改用户控件窗口的大小 问题是,当我调用GET方法查看按钮是否被单击时,它总是返回falseC# GET将变量更改为false,c#,return,C#,Return,我正在努力学习如何在外接程序中工作。我知道在AddIn开发probrams不是个好主意,但我想这样做 我制作了一个用户控制窗口,它有两个参数(宽度和高度)。单击按钮时,这些参数将更改用户控件窗口的大小 问题是,当我调用GET方法查看按钮是否被单击时,它总是返回false public int WindowWidth { get { return int.Parse(textBox_width.Text); }
public int WindowWidth
{
get
{
return int.Parse(textBox_width.Text);
}
set
{
textBox_width.Text = value.ToString();
}
}
public int WindowHeight
{
get
{
return int.Parse(textBox_height.Text);
}
set
{
textBox_height.Text = value.ToString();
}
}
public bool ModifyIsClicked
{
get
{
return _ModifyIsClicked;
}
set
{
_ModifyIsClicked = value;
}
}
private void button_modify_Click(object sender, EventArgs e)
{
MessageBox.Show("Width " + WindowWidth + " and Height " + WindowHeight);
_ModifyIsClicked = true;
}
private bool _ModifyIsClicked;
这是验证按钮是否已单击并更改窗口大小的代码:
MainWindow mainWindow = new MainWindow();
if (mainWindow.ModifyIsClicked == true)
{
toolWin.Width = mainWindow.WindowWidth;
toolWin.Height = mainWindow.WindowHeight;
mainWindow.ModifyIsClicked = false;
}
我忘了提到上面的代码在Connect类的“public void QueryStatus”中
使用debug,我看到了变量_ModifyIsClicked如何变为TRUE,当它到达“return _ModifyIsClicked”时,它如何变为FALSE
当变量变为
当变量变为时,我已与某人交谈并向我解释了问题 我处理文本框和按钮的主要对象是在方法“Exec”中创建的。这是我的错,因为我没有意识到
MainWindows()
对象是在哪里创建的。我知道它从未被创造过
每次我做一个动作,比如点击按钮,我都能看到我的变量是如何改变它的值的,但是每个对象的变量的默认值是“false”。所以当我创建“第一个对象”时:mainwindowmainwindow=newmainwindow()代码>,实际上我正在创建一个不同的对象,它位于我的工具窗口之外
这就是我总是得到“false”的原因。当初始化新的主窗口窗体时,ModifyIsClicked值总是false。我知道。其思想是,只有在单击按钮时才能访问if语句,只有当_ModifyIsClicked的值变为false时,才会访问该语句。如果这是检查main窗口的确切方式和位置。ModifyIsClicked
则它将永远无法工作。您需要在单击按钮时实际运行该代码,以使其正常运行。我尝试过这样做,但没有解决问题:MainWindow MainWindow=new MainWindow();bool buttonclick=main window.modifyisclick;if(buttonclick==true)
该“if”语句位于Connect.cs文件中的“public void QueryStatus”方法中。我这样做是因为目前我还不知道其他修改窗口尺寸的方法。“private EnvDTE.Window toolWin;”和“private EnvDTE80.Windows2 toolWins;”在Connect类中从Connect.cs文件初始化。“toolWin”是用于与窗口交互的变量。按钮\u modify\u Click
位于主窗口中(或者至少看起来是),因此您需要访问toolWin
(甚至不需要单击ModifyIsclick
)。
MainWindow mainWindow = new MainWindow();
private void button_modify_Click(object sender, EventArgs e)
{
MessageBox.Show("Width " + WindowWidth + " and Height " + WindowHeight);
_ModifyIsClicked = true;
if (mainWindow.ModifyIsClicked == true)
{
toolWin.Width = mainWindow.WindowWidth;
toolWin.Height = mainWindow.WindowHeight;
mainWindow.ModifyIsClicked = false;
}
}