访问c#中两个按钮之间的数据

时间:2018-04-21 09:26:55

标签: c# winforms button methods

我的问题已经在标题中了。让我们澄清一下,基本上我做了一个简单的程序。在该程序中有两个按钮和一个文本框,一个用于选择另一个文件夹以查看文本框。这是我的代码:

private void button1_Click(object sender, EventArgs e)
        {
            var filenames = Directory.GetFiles("C:/Users/Example/Desktop/folder");

        }
private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Lines = filenames

        }

但文件名用红色加下划线。这意味着我无法从button2访问“filenames”元素,任何人都可以告诉我如何访问它。谢谢

3 个答案:

答案 0 :(得分:4)

应该首先全局声明

文件名数组,以使用两个按钮的内部点击事件,如注释中所述。此外,我们无法声明类型为var global的变量。

string[] filenames;

private void button1_Click(object sender, EventArgs e)
{
   filenames = Directory.GetFiles("C:/Users/Example/Desktop/folder");
}

private void button2_Click(object sender, EventArgs e)
{
   textBox1.Lines = filenames
}

答案 1 :(得分:2)

如评论中所述,应该是这样的:

string[] filenames;

private void button1_Click(object sender, EventArgs e)
{
    filenames = Directory.GetFiles("C:/Users/Example/Desktop/folder");
}

private void button2_Click(object sender, EventArgs e)
{
    textBox1.Lines = filenames
}

filenames 是一个字符串数组:msdn 阅读范围here可能会很好。

答案 2 :(得分:1)

您已在button1单击事件处理程序方法中声明并初始化了filenames变量。因此,它只能在该方法(Scope)内访问。如果您还需要从外部访问它,那么您需要在类级别范围声明变量(在本例中为文件名)。

string[] filenames;

public Form1()
{
    InitializeComponent();            
}

private void button1_Click(object sender, EventArgs e)
{
    //var filenames = Directory.GetFiles("C:/Users/Example/Desktop/folder");
    filenames = Directory.GetFiles(@"C:/Users/Example/Desktop/folder");
}

private void button2_Click(object sender, EventArgs e)
{
    textBox1.Lines = filenames;
}

推荐读物...
C# - Understanding Variable Scope
C# Variable Scopes