如何在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);
}
}
}
"
将其定义为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方法中调用它。这样,您就可以从不同类中的其他方法引用它。