出现错误:“正在设置的类型与标记的值表示形式不兼容。”
  string fi = null;
        public void reading(object sender, EventArgs e)
    { 
        read_from_folder = folderBrowserDialog1.ShowDialog();
        if (read_from_folder == DialogResult.OK)
        {
            files_in_folder = Directory.GetFiles(folderBrowserDialog1.SelectedPath);
            foreach (string fi files_in_folder)
            {
                string fi_nam = filese_in_folder.ToString();
                 ...
             }
          }
       }
    private void button1_Click(object sender, EventArgs e)
    {
                DicomDirectory cop = new DicomDirectory(fi);
                 cop.Load(fi);
    } 发布于 2010-09-23 02:33:28
我同意Frederik的观点,本地fi隐藏了类级别的成员。但是在按钮点击处理程序中的变量中并不清楚您期望的是什么。
因为是循环,所以如果使用类成员fi,将只引用最后一个文件。这可能没有任何意义。如果您正在搜索匹配,比如在循环中,并在匹配时停止,那么取消隐藏类级别的fi将是有意义的,并且您拥有的代码将会工作。你想用fi做什么?
此外,您的for循环不会像列表中所列的那样工作。应该是:
//  Missing the 'in'
foreach (string fi in files_in_folder)*更新*回应您在问题中所做的更改,您是从哪里得到此错误的?在按钮单击事件中?在哪条线上?这听起来像是DicomDirectory对象的自定义内部错误,不管是什么。
发布于 2010-09-23 02:15:39
fi是在所示函数之外声明的,因此它应该在一个函数中有类作用域,而不是局部作用域。这意味着你应该能够在你的两个函数中使用它。这里假设您展示的两个函数在同一个类中(例如“Form1”)。
您可能还希望发布包含这些函数的类声明,这将验证它们是否在同一个类中。
发布于 2010-09-23 02:16:20
fi不是局部的,它将是那个类的全局的。
你在那里所拥有的将会工作。
https://stackoverflow.com/questions/3772329
复制相似问题