Текстовое поле C # остается пустым

#c# #textfield

#c# #текстовое поле

Вопрос:

Я вызываю открытый метод из другого класса. Он принимает список в качестве параметра и просматривает список, выводя каждый элемент в текстовое поле. Проблема в том, что текстовое поле остается пустым!. Я проверил, что список заполняется путем вывода элемента на консоль, прежде чем поместить его в текстовое поле, и текст там отображается нормально.

Список содержит строки и должен выводить каждую строку в текстовое поле, за которым следует точка с запятой.

Это вызываемый метод:

 public void fillAttachment(List<string> attachList)
{
  for (int i = 0; i < attachList.Count; i  )
  {
    Console.WriteLine("List: "   attachList[i]);
    txtAttach.Text  = attachList[i]   ";";
  }
}
  

Комментарии:

1. Я предполагаю, что вы находитесь в потоке пользовательского интерфейса при вызове FillAttachment? В противном случае вы получите исключение. При пошаговом выполнении кода, точка останова на txtAttach … строка, вы видите, как она растет по мере цикла?

2. Попробуйте пропустить цикл for, чтобы убедиться. Просто установите тестовую строку в текстовое поле, это работает? Если это так, попробуйте кэшировать строку, а затем установите ее в текстовое поле. Что-то вроде string tmpString = txtAttach . Текст; затем объедините свои элементы и, наконец, обновите txtAttach. Текст = tmpString;

3. Попытка просто назначить строку текстовому полю также не работает. Тогда, должно быть, проблема с текстовым полем. Есть идеи, что может быть не так?

4. Добавление к чему-либо, что может быть нулевым? Вы уверены, что это правильно? Как говорит @SuperOli, пытаюсь инициировать txtAttach. Сначала свойство текста. Даже с txtAttach.text = String . Пусто;

Ответ №1:

Я бы решил это таким образом:

 foreach(var attach in attachList)
{
  Console.WriteLine(attach);
  txtAttach.AppendText(string.Format("{0};", attach));
}
  

Ответ №2:

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

  • Вы не смотрите на тот же элемент управления, в котором вы устанавливаете текст

Не могли бы вы создать экземпляр второй копии объекта form, и именно в этой форме вы устанавливаете свойство txtAttach text?

Может ли элемент управления, который вы ожидаете заполнить, быть другим? Щелкните правой кнопкой мыши текстовое поле, в котором вы хотите, чтобы текст отображался, выберите свойства и проверьте имя.

  • Что-то еще очищает текстовое поле после его установки

Щелкните правой кнопкой мыши на txtAttach.Введите текст и нажмите «Найти все ссылки», это покажет вам все места, на которые ссылается свойство Text — записанное и прочитанное — в вашем проекте. Это очень полезный способ найти другое взаимодействие с этим элементом управления.

  • Fomatting делает текстовое поле пустым

Шрифт слишком маленький или того же цвета, что и фон. Можете ли вы выделить текст в текстовом поле?

Самый простой способ проверить все вышеперечисленное — создать новый текстовый элемент управления в вашей форме с другим именем, изменить свой код для его заполнения, убедиться, что он действительно заполнен, а затем заменить старый.

Кроме того, вы также можете сократить код на одну строку следующим образом:

 public void fillAttachment(List<string> attachList)
{
    txtAttach.Text = String.Join(";", attachList.ToArray());
}
  

Хотя это, очевидно, пропускает функцию строки записи в консоли.

Ответ №3:

Не уверен, почему ваше не работает, но я бы сделал это так…

 public void fillAttachment(List<string> attachList)
{
    string result = "";
    //OR (if you want to append to existing textbox data)
    //string result = txtAttach.Text;

    for (int i = 0; i < attachList.Count; i  )
    {
        Console.WriteLine("List: "   attachList[i]);
        result  = attachList[i]   ";";
    }

    txtAttach.Text = resu<
}
  

Это работает для вас? Если нет, то есть что-то еще очень неправильное, что не очевидно из вашего кода

Комментарии:

1. К сожалению, это тоже не работает. Даже простое назначение строки прямо в текстовое поле не работает. Не только это текстовое поле, но и попытка отправить текст в одно из других текстовых полей также не работает. Может ли это быть связано с тем фактом, что я вызываю этот метод из другого класса?