Импорт файла текстового поля C # - PullRequest
0 голосов
/ 26 октября 2010

У меня есть форма с несколькими текстовыми полями, которые представляют собой пути к файлам, из которых программа импортирует данные.В настоящее время они проверяются на ненулевую длину следующим образом:

    //this code imports the files required by the user, as specified in the
    //file path text boxes
    private void btImport_Click(object sender, EventArgs e)
    {
        bool hasPath = false;
        foreach (TextBox box in this.gbPaths.Controls.OfType<TextBox>().Where(tb => tb.Text.Length > 0))
        {
            hasPath = true;
            //import code
        }//end foreach

        if (!hasPath)
        {
            MessageBox.Show("You must enter at least one file path.");
        }//end if
    }//end import code

Мне интересно, могу ли я заменить деталь //import code чем-то вроде:

if(tb.Name = "txtAvF") then...

или подобное, или я должен сделать это вне цикла foreach?Заранее спасибо.Дайте мне знать, если мне нужно что-то уточнить.

Ответы [ 3 ]

0 голосов
/ 26 октября 2010

Вы должны сделать это внутри цикла. Как это:

if (box.Name == "txtAvF")
    box.Text = "What you want";

Но установка hasPath внутри цикла просто сохраняет состояние вашего последнего пути. Вы также должны переместить MessageBox код внутри цикла.

0 голосов
/ 26 октября 2010

Назначение hasPath мне кажется правильным; это установлено для любого текстового поля, и если не установлено в конце цикла, отображается сообщение. Это хорошо рифмуется с отображаемым текстом. Перемещение вызова MessageBox в цикл приведет к тому, что диалоговое окно никогда не будет отображаться (или ошибочно отображаться), по крайней мере, так как код реализован сейчас, поскольку OfType <> (). Where () гарантирует, что все текстовые поля, повторяемые в хоть какой-то контент.

(я бы добавил это как комментарий к @ Xaqron , но пока не приобрел необходимой репутации.)

0 голосов
/ 26 октября 2010

Если вы хотите проверить, является ли TextBox одним из полей в форме (я думаю, что вы), то вы == который ( взят из MSDN )

the operator == tests for reference equality by determining if two references indicate the same object

Итак, это то, что вы ищете:

if(box == textBox1 && !string.IsNullOrEmpty(box.Text))
{
      // Import Textbox1
}
else if(box == textBox2 && !string.IsNullOrEmpty(box.Text))
{
      // Import Textbox2
}
else if (box == textBox3....)
...