首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在另一个按钮中使用局部变量

在另一个按钮中使用局部变量
EN

Stack Overflow用户
提问于 2010-09-23 02:10:31
回答 3查看 418关注 0票数 0

出现错误:“正在设置的类型与标记的值表示形式不兼容。”

代码语言:javascript
运行
复制
  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);
    } 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-23 02:33:28

我同意Frederik的观点,本地fi隐藏了类级别的成员。但是在按钮点击处理程序中的变量中并不清楚您期望的是什么。

因为是循环,所以如果使用类成员fi,将只引用最后一个文件。这可能没有任何意义。如果您正在搜索匹配,比如在循环中,并在匹配时停止,那么取消隐藏类级别的fi将是有意义的,并且您拥有的代码将会工作。你想用fi做什么?

此外,您的for循环不会像列表中所列的那样工作。应该是:

代码语言:javascript
运行
复制
//  Missing the 'in'
foreach (string fi in files_in_folder)

*更新*回应您在问题中所做的更改,您是从哪里得到此错误的?在按钮单击事件中?在哪条线上?这听起来像是DicomDirectory对象的自定义内部错误,不管是什么。

票数 1
EN

Stack Overflow用户

发布于 2010-09-23 02:15:39

fi是在所示函数之外声明的,因此它应该在一个函数中有类作用域,而不是局部作用域。这意味着你应该能够在你的两个函数中使用它。这里假设您展示的两个函数在同一个类中(例如“Form1”)。

您可能还希望发布包含这些函数的类声明,这将验证它们是否在同一个类中。

票数 0
EN

Stack Overflow用户

发布于 2010-09-23 02:16:20

fi不是局部的,它将是那个类的全局的。

你在那里所拥有的将会工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3772329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档