Вопрос

Я пишу приложение на 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, которое отправляет вызов для удаления элемента, если он хранится в базе данных, или удаления элемента из списка на странице.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top