如何在c#中使用其他上下文中的变量

本文关键字:其他 上下文 变量 | 更新日期: 2023-09-27 18:02:35

我只是需要知道如何从其他块或上下文(或无论他们叫它什么)使用变量…

我试图使用powershell为windows 10创建一个应用程序安装程序,但我只是c#的初学者…

我有2个按钮浏览和安装,我在浏览按钮的块中声明文件的位置,我试图在安装按钮的上下文中使用该变量。

但是我得到的是"名称"appFile"在当前上下文中不存在。"

下面是我的代码:

   private void button3_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Created by Carlos Miguel Salamat","Windows App Installer");
    }
    private void button1_Click(object sender, EventArgs e)
    {
        OpenFileDialog file = new OpenFileDialog();
        file.Title = "Choose Package File";
        file.InitialDirectory = @"c:'";
        file.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";
        file.FilterIndex = 2;
        file.RestoreDirectory = true;
        if (file.ShowDialog() == DialogResult.OK)
        {
            textBox1.Text = file.FileName;
           string appFile = file.FileName;
        }
    }
    private void button2_Click(object sender, EventArgs e)
    {
        string strCmdText;
        strCmdText = "powershell.exe add-appxpackage";
        System.Diagnostics.Process.Start("CMD.exe", strCmdText, appFile);
    }
  }
}

"

如何在c#中使用其他上下文中的变量

将其定义为global,

string appFile = "";
private void button1_Click(object sender, EventArgs e)
{
    OpenFileDialog file = new OpenFileDialog();
    file.Title = "Choose Package File";
    file.InitialDirectory = @"c:'";
    file.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";
    file.FilterIndex = 2;
    file.RestoreDirectory = true;
    if (file.ShowDialog() == DialogResult.OK)
    {
        textBox1.Text = file.FileName;
        this.appFile = file.FileName;
    }
}
private void button2_Click(object sender, EventArgs e)
{
    string strCmdText;
    strCmdText = "powershell.exe add-appxpackage";
    System.Diagnostics.Process.Start("CMD.exe", strCmdText, this.appFile);
}

希望帮助,

答案显然是正确的,但在盲目地应用它们之前,我强烈建议您查找一些关于编程和面向对象的101。变量作用域规则在大多数语言中非常相似。如果您试图跳过这些基本内容,您会发现自己也处于类似的困惑境地。

您需要将变量至少放在类上下文中,以便从该类中的其他方法访问它。如果你需要从类外访问它你需要将它设为public并添加setter/getter

public class YourClass {
    public string AppFile {get;set;}
    private void button3_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Created by Carlos Miguel Salamat","Windows App Installer");
    }
    private void button1_Click(object sender, EventArgs e)
    {
        OpenFileDialog file = new OpenFileDialog();
        file.Title = "Choose Package File";
        file.InitialDirectory = @"c:'";
        file.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";
        file.FilterIndex = 2;
        file.RestoreDirectory = true;
        if (file.ShowDialog() == DialogResult.OK)
        {
            textBox1.Text = file.FileName;
            this.AppFile = file.FileName;
        }
    }
    private void button2_Click(object sender, EventArgs e)
    {
        string strCmdText;
        strCmdText = "powershell.exe add-appxpackage";
        System.Diagnostics.Process.Start("CMD.exe", strCmdText, this.AppFile);
     }

}

你也可以使用文本属性从你的textBox1像这样:

    private void button2_Click(object sender, EventArgs e)
    {
        string strCmdText;
        strCmdText = "powershell.exe add-appxpackage";
        System.Diagnostics.Process.Start("CMD.exe", strCmdText, textBox1.Text);
     }

但我绝对建议你使用第一种解决方案。

你可以阅读&点击这里了解:

https://msdn.microsoft.com/en-us/library/ms973875.aspx

可能是一个简短的答案,但与其给你一条鱼,不如你自己学会怎么钓。

Wim,是对的。你可以很好地将这类代码分解成一个叫做file的类,然后在click方法中调用它。这样,您就可以从不同类中的其他方法引用它。