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

时间:2016-08-15 08:14:01

标签: c#

我只需要知道如何使用其他块或上下文中的变量(或者他们称之为的任何内容)......

我正在尝试使用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);
    }
  }
}

`

5 个答案:

答案 0 :(得分:1)

将其定义为全局,

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

希望有所帮助,

答案 1 :(得分:1)

答案显然是正确的,但在盲目应用之前,我强烈建议您在编程和面向对象方面寻找101。变量范围规则在大多数语言中非常相似。如果你试图跳过基础知识,你会发现自己陷入了类似的困境。

答案 2 :(得分:0)

你可以阅读&在这里了解它:

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

可能是一个简短的答案,但不是给你一条鱼,你最好学会如何捕捉它。

答案 3 :(得分:0)

您需要至少在类上下文中放置变量,以便从此类中的其他方法访问它。如果您需要从课外访问它,您需要将其公开并添加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中的Text属性,如下所示:

    private void button2_Click(object sender, EventArgs e)
    {

        string strCmdText;
        strCmdText = "powershell.exe add-appxpackage";
        System.Diagnostics.Process.Start("CMD.exe", strCmdText, textBox1.Text);
     }

但我会建议你使用第一个解决方案。

答案 4 :(得分:0)

Wim,是对的。您可以将这种类型的代码打破,比如说一个名为file的类,然后在click方法上调用它。这样,您可以从其他类中的其他方法引用它。在使用复杂的对象时,我的意见。