#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 и задать ему одну колонку. Хотя этот вариант будет выглядеть менее красиво.
Комментариев нет:
Отправить комментарий