2009-05-02 4 views
6

Я пишу приложение C# (WinForm) с ListBox с содержимым, добавленным пользователем. Теперь у меня могла бы быть обычная кнопка под ListBox для удаления элементов, но я хотел бы иметь кнопку рядом с контентом, таким образом, находясь внутри ListBox.C# - Добавление кнопки внутри ListBox

Как это:

  • Содержание 1 | X
  • Контент 2 | X
  • ...
  • Содержание 5 | X

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

Подсказки, подсказки или фрагменты для этого гарантируются! :)

+0

Win Forms или ASP.NET? – Canavar

+0

И я получаю downvoted для фактического чтения вопроса ....: вздох: –

+0

@Canavar WinForms. @ Deviant Downvoted? – Vectovox

ответ

3

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

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

Да, я знаю, что-то вроде уродливого «взлома», но он работает как шарм! :)

Реквизиты для Shay Erlichmen, которые привели меня к мысли, выйдя из моего списка ListBox. Посмотрите, что я там сделал? ;)

+1

Да, DataGrids отлично работают для этого, хотя они сложнее, чем ListBox. Вы можете сделать его похожим на таблицу в HTML или похожий стиль. –

0

Я не знаю, почему вы хотели бы сделать это конкретно? Я бы положил кнопку внизу, которая удаляет все выбранные элементы в списке. Это считается обычным способом выполнения такой вещи, если вы не хотите использовать jquery и помещать событие onClick в список, который отправляет вызов для удаления элемента, если он хранится в базе данных или удаляет элемент из списка на странице ,

+3

Ну, я не обычный, и я предпочитаю более продвинутый вариант. Дело в том, что кнопка (или значок) на стороне более приятна для глаз, а также уменьшает количество кликов одним щелчком мыши на удаление. – Vectovox

1

Предполагая, что это приложение WinForms

Вам потребуется пользовательский элемент управления для этого. Я бы обследовал продавцов, например, http://www.devexpress.com/Products/NET/Controls/WinForms/Editors/editors/ListBoxes.xml, может быть, кто-то знает о контроле, который специально это делает.

+0

Хорошо, только то, что мне нужно было услышать, пользовательский контроль: – Vectovox

+0

Вы можете сделать свой собственный контроль, но это не тривиальная задача. –

2

с использованием системы; с использованием System.Collections.Generic; с использованием System.Windows.Forms;

имен WindowsFormsApplication11 { общественного частичного класса Form1: Form { Список _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; 
    } 
} 

}

частная пустота button1_Click (объект отправителя, EventArgs е) { // Кнопка Add была нажата. // ...

button2.Enabled = true; 

}

частная пустота button2_Click (объект отправителя, EventArgs е) { // Кнопка Remove была нажата. // ....

if (listBox1.Items.Count == 0) 
{ 
    button2.Enabled = false; 
} 

}

+0

. Должен ли читать вопрос лучше;) –

+0

Да, я не думаю, что вы читали мои вопрос очень тщательный :) – Vectovox

+0

@Alb В этом вопросе говорится, что «таким образом, находясь внутри ListBox». В любом случае эта техника listbox.datasource = list гораздо более компактна, чем прозрачная, добавляет. Так что ответ все же стоит. – prabhakaran

6

Вместо ListBox вы можете использовать ListView, ListView имеет ability to add custom column types.

+0

ListBox и ListView находятся на расстоянии друг от друга. Может быть, он должен бросить древовидный контроль для хорошей меры. –

+1

ListView в режиме отчета без заголовков с полным выбором строки, а не линий сетки, выглядят и ведут себя так же, как ListBox. В качестве дополнительного элемента проще добавлять кнопки (или любой другой элемент управления), а затем пытаться создать настраиваемый элемент управления. –

Смежные вопросы