C# 如何在另一个函数中引用从私有函数获得的变量?

C# 如何在另一个函数中引用从私有函数获得的变量?,c#,wpf,openfiledialog,C#,Wpf,Openfiledialog,我希望有人能帮助我。我比较新,希望了解如何将一个类中变量的值传递给另一个类。在这种情况下,我想使用Button_Click_2中Button_Click_1中的numPage和filePath数组 提前谢谢你 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Button_Click_1(ob

我希望有人能帮助我。我比较新,希望了解如何将一个类中变量的值传递给另一个类。在这种情况下,我想使用Button_Click_2中Button_Click_1中的numPage和filePath数组

提前谢谢你

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        Microsoft.Win32.OpenFileDialog openFileDialog1 = new Microsoft.Win32.OpenFileDialog();

        openFileDialog1.Filter = "Images (.jpg)|*.jpg";
        openFileDialog1.FilterIndex = 1;

        openFileDialog1.Multiselect = true;

        bool? userClickedOK = openFileDialog1.ShowDialog();

        if (userClickedOK == true)
        {
            string[] filePaths = openFileDialog1.FileNames;
            int imageNum = 0;
            lblFilePath.Content = filePaths[imageNum];
        }

    }

    private void Button_Click_2(object sender, RoutedEventArgs e)
    {
        imageNum++;
        lblFilePath.Content = filePath[imageNum];
    }
}
使用类内主窗口

private string[] FilePaths{get;set;}

将变量filePath替换为filePath。

您需要在此处创建实例变量,而不是将变量限定为方法的本地变量:

public partial class MainWindow : Window
{
    private string[] filePaths;
    private int imageNum = 0;

    //...

}

然后,您可以在这两个方法中使用这些实例变量(确保不要重新定义同名的新局部变量)。

将这两个变量都作为表单1的属性

public partial class MainWindow : Window
{

   private string[] FilePaths {get;set;}
   int imageNum = 0;

   public MainWindow()
   {
    InitializeComponent();
   }

private void Button_Click_1(object sender, RoutedEventArgs e)
{
    Microsoft.Win32.OpenFileDialog openFileDialog1 = new Microsoft.Win32.OpenFileDialog();

    openFileDialog1.Filter = "Images (.jpg)|*.jpg";
    openFileDialog1.FilterIndex = 1;

    openFileDialog1.Multiselect = true;

    bool? userClickedOK = openFileDialog1.ShowDialog();

    if (userClickedOK == true)
    {
        FilePaths = openFileDialog1.FileNames;

        lblFilePath.Content = filePaths[imageNum];
    }

}

private void Button_Click_2(object sender, RoutedEventArgs e)
{
    imageNum++;
     if(imageNum<FilePaths.Length)
         lblFilePath.Content = FilePaths[imageNum];
}
公共部分类主窗口:窗口
{
私有字符串[]文件路径{get;set;}
int imageNum=0;
公共主窗口()
{
初始化组件();
}
私有无效按钮\u单击\u 1(对象发送者,路由目标)
{
Microsoft.Win32.OpenFileDialog openFileDialog1=新建Microsoft.Win32.OpenFileDialog();
openFileDialog1.Filter=“图像(.jpg)|*.jpg”;
openFileDialog1.FilterIndex=1;
openFileDialog1.Multiselect=true;
bool?userClickedOK=openFileDialog1.ShowDialog();
if(userClickedOK==true)
{
filepath=openFileDialog1.filename;
lblFilePath.Content=filepath[imageNum];
}
}
私有无效按钮\u单击\u 2(对象发送方,路由目标)
{
imageNum++;

如果(imageNum,您只需要将它们存储为类实例变量,而不是本地方法变量

公共部分类主窗口:窗口
{
//现在可以从此类中的任何方法访问这些。
私有字符串[]文件路径=null;
私有int-imageNum=0;
公共主窗口()
{
初始化组件();
}
私有无效按钮\u单击\u 1(对象发送者,路由目标)
{
Microsoft.Win32.OpenFileDialog openFileDialog1=新建Microsoft.Win32.OpenFileDialog();
openFileDialog1.Filter=“图像(.jpg)|*.jpg”;
openFileDialog1.FilterIndex=1;
openFileDialog1.Multiselect=true;
bool?userClickedOK=openFileDialog1.ShowDialog();
if(userClickedOK==true)
{
//您可以使用关键字“this”访问实例变量,但它是可选的。
this.filepath=openFileDialog1.FileNames;
this.imageNum=0;
lblFilePath.Content=this.filepath[this.imageNum];
}
}
私有无效按钮\u单击\u 2(对象发送方,路由目标)
{
//您可能希望在此处进行一些验证,以防止出现错误情况。
//验证文件路径是否已初始化。
if(this.filepath==null)
{
System.Windows.Forms.MessageBox.Show(“没有要显示的文件路径”);
}
//验证imageNum是否可以在没有IndexOutOfRangeException的情况下递增。
else if(this.imageNum
这是每个C#开发者(如果不是大多数人的话)都应该知道的东西这里有一个MSDN站点,它将帮助您理解
访问修饰符
另一个有用的链接-。如果在按钮1之前单击按钮2,您还需要注意文件路径(如果可能的话)然后,尝试访问它时会出现错误。如果imageNum高于文件路径的上限,即使初始化了它,也会出现错误。