C # - Добавление кнопки внутри ListBox
Вопрос
Я пишу приложение на C # (WinForm) со списком, содержащим содержимое, добавленное пользователем.Теперь у меня могла бы быть обычная кнопка под списком для удаления элементов, но я хотел бы, чтобы кнопка находилась прямо рядом с содержимым, таким образом, находясь внутри списка.
Вот так:
- Содержание 1 | X
- Содержание 2 | X
- ...
- Содержание 5 | X
Проблема в том, что мне не хватает опыта работы с .NET, поэтому я понятия не имею, как это было бы возможно при всех автоматизированных элементах управления.Я погуглил, но не получил никаких значимых результатов.
Любые подсказки или фрагменты для достижения этой цели приветствуются!:)
Решение 2
Таким образом, можно было бы создать пользовательский элемент управления, но для моего приложения это на самом деле не стоит таких хлопот.
Что я сделал, так это создал DataGrid, сделав его похожим на ListView, но со своей собственной подсветкой.Я сделал это, потому что DataGrid уже имеет buttoncontrol, встроенный в его ячейки.
Да, я знаю, это какой-то убогий "взлом", но работает он просто очаровательно!:)
Спасибо Шаю Эрлихмену, который навел меня на мысль о том, чтобы разместить мой список в другом месте.Видишь, что я там сделал?;)
Другие советы
Вместо ListBox вы можете использовать ListView, ListView имеет возможность добавления пользовательских типов столбцов.
использование Системы;использование системы.Коллекции.Общий;использование системы.Windows.Формы;
пространство имен WindowsFormsApplication11 { открытый частичный класс Form1 :Форма { Список _items = новый список();
public Form1()
{
InitializeComponent();
_items.Add("One");
_items.Add("Two");
_items.Add("Three");
listBox1.DataSource = _items;
}
private void button1_Click(object sender, EventArgs e)
{
// The Add button was clicked.
_items.Add("New item " + DateTime.Now.Second);
// Change the DataSource.
listBox1.DataSource = null;
listBox1.DataSource = _items;
}
private void button2_Click(object sender, EventArgs e)
{
// The Remove button was clicked.
int selectedIndex = listBox1.SelectedIndex;
try
{
// Remove the item in the List.
_items.RemoveAt(selectedIndex);
}
catch
{
}
listBox1.DataSource = null;
listBox1.DataSource = _items;
}
}
}
приватная пустая кнопка 1_click(отправитель объекта, EventArgs e) { // Была нажата кнопка Добавить.// ...
button2.Enabled = true;
}
частная кнопка аннулирования 2_click(отправитель объекта, EventArgs e) { // Была нажата кнопка Удаления.// ....
if (listBox1.Items.Count == 0)
{
button2.Enabled = false;
}
}
Предполагая, что это приложение WinForms
Для этого вам понадобится пользовательский элемент управления.Я бы проверил таких поставщиков, как http://www.devexpress.com/Products/NET/Controls/WinForms/Editors/editors/ListBoxes.xml может быть, кто-то знает об элементе управления, который специально делает это.
Я не знаю, почему вы хотели бы сделать именно это?Я бы поместил кнопку внизу, которая удаляет все выбранные элементы в списке.Это считается обычным способом сделать такую вещь, если только вы не хотите использовать jquery и поместить событие onClick в listbox, которое отправляет вызов для удаления элемента, если он хранится в базе данных, или удаления элемента из списка на странице.