Форма в поле списка не используйте функцию toString() для отображения элемента списка

#c# #winforms #listbox

Вопрос:

Основная Форма:

 using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            listBox1.Items.Add("A");
            listBox1.Items.Add(new SimpleForm());
        }

    }

}
 

Форма для добавления в список:

 using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class SimpleForm : Form
    {
        public SimpleForm()
        {
            InitializeComponent();
        }

        public override string ToString()
        {
            return "SimpleForm";
        }

    }

}
 

Элемент списка 2 пуст вместо «SimpleForm». Любые другие объекты используют функцию toString() без проблем.

Это мой первый вопрос, так что будьте джентльменами. Stackoverflow помогал мне так много раз за эти годы.

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

1. Извините, но ваш вопрос неясен. Можете ли вы быть более конкретным и предоставить более подробную информацию?

2. Не может размножаться. Ваш код, проверенный здесь, отображает «SimpleForm» для второго элемента

3. @zaggler, как упоминал Стив, я не могу воспроизвести проблему.

4. В более новых версиях .Net Framework произошли кардинальные изменения. Вы должны установить FormattingEnabled = false , иначе вернется внутренний метод Add () GetItemText([new Item]) , который, конечно же, является пустой строкой. Когда свойству установлено значение false , [Item].ToString() оно возвращается вместо этого.

5.@Стив private int NativeAdd(элемент объекта) => Контроль списка.GetItemText()