Страницы

Поиск по вопросам

четверг, 5 декабря 2019 г.

Как сделать в VS 2015 аналог ListBox

#c_sharp #winforms


Как сделать в VS 2015 аналог ListBox, но с возможностью пользовательского редактирования
данных, то есть по сути таблицу состоящую из textbox?

Использовать сами textbox не могу, т.к. постоянно может требовать их разное количество,
а listbox не подходит, т.к. требуется авто-выведение списка цен и иногда их редактирование
уже в процессе пользования.
    


Ответы

Ответ 1



таблицу состоящую из textbox Если в таблице должно быть несколько столбцов, то в WinForms можно использовать DataGridView, у которого можно определить тип выводимых ячеек. Например, чтобы в ячейках выводились TextBox надо использовать DataGridViewTextBoxColumn. class Data { public string Value { get; set; } } var f = new Form(); var g = new DataGridView() { Parent = f, Dock = DockStyle.Fill, AutoGenerateColumns = false, AllowUserToAddRows = false, AllowUserToDeleteRows = false }; g.Columns.Add(new DataGridViewTextBoxColumn() { HeaderText = "value", DataPropertyName="Value" }); var l = new BindingList(); for (var i = 0; i < 5; i++) l.Add(new Data() { Value = "v"+i }); g.DataSource = l; f.ShowDialog(); Значение свойств Data.Value выводятся в DataGridView и их можно редактировать, а изменения передаются обратно в Data.Value. Если надо добавить столбец, то в Data надо добавить свойство и добавить еще один столбец в DataGridView.Columns.

Ответ 2



Можно воспользоваться контролом ListView: если поставить свойство LabelEdit в true, то текст можно редактировать. При этом свойство Activation отвечает за переход в режим редактирования: по одинарному клику (ItemActivation.OneClick) или по двойному клику (ItemActivation.TwoClick). Добавление новой записи программно может выглядеть так: ListViewItem item = listView.Items.Add(String.Empty); item.BeginEdit(); // переходим врежим редактирования текущей записи Также можно воспользоваться контролом DataGridView и задать ему одну колонку. Хотя этот вариант будет выглядеть менее красиво.

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

Отправить комментарий