C#中的命名空间问题

时间:2014-09-01 08:30:07

标签: c# namespaces

...
using System.Xml;

namespace WindowsFormsApplication2
{
    public partial class Form2 : Form
    {
        XmlDocument activeDoc=new XmlDocument();
        public Form2(string path)
        {
            InitializeComponent();
        }


        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
                MessageBox.Show(Convert.ToString(sender),Convert.ToString(e));
        }

        private void button1_Click(object sender, EventArgs e)
        {
            save(path);
        }
        private void save(string path){
            activeDoc.Save(path);
        }
    }
}

为什么button1_click函数说“'path'元素在此上下文中不可用”? 我确信Form2接收'path',因为带路径的诊断消息可以正常工作。

4 个答案:

答案 0 :(得分:1)

在构造函数中为类变量分配路径,如下所示。注意,Methods / Constructor的参数只能在该方法/构造函数的上下文中访问。无法进入边界。

string pathString = string.Empty;

XmlDocument activeDoc=new XmlDocument();
public Form2(string path)
{
   pathString = path;
   InitializeComponent();
}

答案 1 :(得分:0)

你必须在Project..do中的某个地方声明路径

...

    using System.Xml;

    namespace WindowsFormsApplication2
    {
        public partial class Form2 : Form
        {
            XmlDocument activeDoc=new XmlDocument();
            String path;
            public Form2(string _path)
            {
                path = _path;
                InitializeComponent();
            }


            private void checkBox1_CheckedChanged(object sender, EventArgs e)
            {
                    MessageBox.Show(Convert.ToString(sender),Convert.ToString(e));
            }

            private void button1_Click(object sender, EventArgs e)
            {
                save(path);
            }
            private void save(string path){
                activeDoc.Save(path);
            }
        }
    }

答案 2 :(得分:-1)

Form2类中没有字段路径。例如,它可以是来自此命名空间的另一个类的静态字段。构造函数和保存方法采取"路径"仅作为本地参数

答案 3 :(得分:-1)

像这样更改你的代码

 public partial class Form2 : Form
    {
        XmlDocument activeDoc=new XmlDocument();
        static  string  Localpath=null;
        public Form2(string path)
        {
            InitializeComponent();
            Localpath=path;
        }

.....

现在

 private void button1_Click(object sender, EventArgs e)
        {
            save(Localpath);
        }