Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GET将变量更改为false_C#_Return - Fatal编程技术网

C# GET将变量更改为false

C# GET将变量更改为false,c#,return,C#,Return,我正在努力学习如何在外接程序中工作。我知道在AddIn开发probrams不是个好主意,但我想这样做 我制作了一个用户控制窗口,它有两个参数(宽度和高度)。单击按钮时,这些参数将更改用户控件窗口的大小 问题是,当我调用GET方法查看按钮是否被单击时,它总是返回false public int WindowWidth { get { return int.Parse(textBox_width.Text); }

我正在努力学习如何在外接程序中工作。我知道在AddIn开发probrams不是个好主意,但我想这样做

我制作了一个用户控制窗口,它有两个参数(宽度和高度)。单击按钮时,这些参数将更改用户控件窗口的大小

问题是,当我调用GET方法查看按钮是否被单击时,它总是返回false

    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;
        }
    }