首页 文章

public string的值始终为null

提问于
浏览
0

我几天前开始学习C#而且我遇到了公共字符串的问题,我现在正在尝试编写一个复制和替换文件以供练习的程序,但无论我有多少,我都遇到了公共字符串的问题试着改变我自己无法弄清楚的代码所以我来这里寻求帮助

我究竟做错了什么?

这是代码:

namespace Extractor
{
    public partial class Form1 : Form
    {
        public string s
        {
            get;
            set;
        }
        public string sSelectedPath
        {
            get;
            set;
        }
        public string beckup
        {
            get;
            set;
        }
        public Form1()
        {
            InitializeComponent();
        }
        private void direc_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fbd = new FolderBrowserDialog();
            fbd.Description = "Select a folder"; 

        if (fbd.ShowDialog() == DialogResult.OK)
        {
            string sSelectedPath = fbd.SelectedPath;
        }

    }

    private void choof_Click(object sender, EventArgs e)
    {
        OpenFileDialog choofdlog = new OpenFileDialog();
        choofdlog.Filter = "All Files (*.*)|*.*";
        choofdlog.FilterIndex = 1;
        choofdlog.Multiselect = true;

        if (choofdlog.ShowDialog() == DialogResult.OK)
        {
             string s = choofdlog.FileName;
        }

    }

    private void button3_Click(object sender, EventArgs e)
    {
        ReplaceFile( s, sSelectedPath, beckup);
    }

    public static void ReplaceFile(string FileToMoveAndDelete, string FileToReplace, string BackupOfFileToReplace)
    {
        File.Replace(FileToMoveAndDelete, FileToReplace, BackupOfFileToReplace, false);

    }

    private void button1_Click(object sender, EventArgs e)
    {
        FolderBrowserDialog fbb = new FolderBrowserDialog();
        fbb.Description = "Select a folder";

        if (fbb.ShowDialog() == DialogResult.OK)
        {
            string beckup = fbb.SelectedPath;
        }
    }
}

3 回答

  • 2
    if (fbd.ShowDialog() == DialogResult.OK)
    {
            string sSelectedPath = fbd.SelectedPath;
    }
    

    您在此处使用 string 关键字声明了一个新变量 . 它没有设置属性 . 只需删除 string 即可 . 例如 .

    if (fbd.ShowDialog() == DialogResult.OK)
    {
            sSelectedPath = fbd.SelectedPath;
    }
    
  • 4

    更换

    string s = choofdlog.FileName;
    

    s = choofdlog.FileName;
    
  • 1

    你的错误在这里:

    if (choofdlog.ShowDialog() == DialogResult.OK)
    {
        string sSelectedPath = choofdlog.FileName;
    }
    

    您使用的是局部变量,而不是成员变量 . 所以,写道:

    if (choofdlog.ShowDialog() == DialogResult.OK)
    {
        sSelectedPath = choofdlog.FileName;
    }
    

    或者,更好的是,如果您不想犯错误,请在编写成员变量或方法时使用 this.

    if (choofdlog.ShowDialog() == DialogResult.OK)
    {
        this.sSelectedPath  = choofdlog.FileName;
    }
    

相关问题