используя локальную переменную в другой кнопке - PullRequest
0 голосов
/ 22 сентября 2010

Есть ошибка: «Установленный тип несовместим с представлением значения тега.»

  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);
    } 

Ответы [ 3 ]

1 голос
/ 22 сентября 2010

Я согласен с Фредериком, местный fi скрывает члена класса.Но неясно, что вы ожидаете увидеть в этой переменной в обработчике нажатий кнопок.

Поскольку вы зацикливаетесь, если вы используете член класса fi, у вас будет только последний файлссылки.Это, вероятно, не имеет смысла.Если вы искали совпадение, скажем, в цикле, и останавливались на этом совпадении, тогда было бы целесообразно скрыть fi уровня класса, и ваш код будет работать.Что конкретно вы пытаетесь сделать с fi?

Кроме того, цикл for, который у вас есть, не будет работать, как указано в списке ... должно быть:

//  Missing the 'in'
foreach (string fi in files_in_folder)

* Обновление * В ответ на ваши изменения в вопросе, где вы получаете эту ошибку?В событии нажатия кнопки?На какой линии?Это звучит как пользовательская внутренняя ошибка для объекта DicomDirectory, что бы это ни было.

0 голосов
/ 22 сентября 2010

fi не будет локальным, он будет глобальным для этого класса.

То, что у вас там будет работать.

0 голосов
/ 22 сентября 2010

fi объявлен вне показанных функций, поэтому он должен иметь область видимости класса, а не локальную область видимости в одной функции. Это означает, что вы должны иметь возможность использовать его в обеих своих функциях. Предполагается, что две показанные вами функции находятся в одном классе (например, «Form1»).

Возможно, вы захотите опубликовать объявление класса, в котором также содержатся эти функции, что позволит проверить, что они находятся в одном классе.

...