WedX - журнал о программировании и компьютерных науках

С# Windows Из списка добавления/удаления

Мне нужно добавить «slushbucket» (термин ServiceNow) в форму Windows C#, как показано на рисунке ниже, но я не могу понять, как они на самом деле называются, поэтому не могу понять, как они создаются.

Кто-нибудь знает, как они называются, или еще лучше, как реализовать их в форме Windows?

Мне нужно, чтобы значения из таблицы 1 отображались слева, а затем, когда они добавляются в правый список и нажимается кнопка сохранения, значения записываются в таблицу 2. Также потребуется показать существующие значения для таблицы 2, если они есть.

SlushBucket

19.02.2016

  • Просто закодируйте это самостоятельно, используя два ListBox или два ListView и несколько кнопок. 19.02.2016
  • Создайте новую форму, добавьте в нее 2 списка и кнопку «Добавить и удалить». Попробуйте немного кодировать (заполните левый список,...), и если у вас есть конкретный вопрос, вы можете задать его здесь снова. 19.02.2016
  • Это чрезвычайно тривиально написать, обработчики кнопок просто берут выбранные значения из поля и добавляют их на другую сторону. 19.02.2016
  • Ну, у вас уже есть прототип. Должно быть легко поместить эти элементы управления в форму, щелкнуть пару раз, чтобы подключить обработчики событий, и написать код для добавления/удаления элементов. Мы не собираемся писать это для вас. 19.02.2016
  • взгляните на dotnetperls.com/listbox 19.02.2016
  • Предложение, нет смысла изучать Windows Forms, мвое прочь, это почти мертвая технология, переходи на wpf 19.02.2016

Ответы:


1

Предполагая, что форма выглядит следующим образом: Form1.Png Вот простой код, который реализует вашу идею следующим образом:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        for (int i = 6; i <= 10; i++)
        {
            listBox1.Items.Add("item" + i);
        }
        for (int i = 1; i <= 5; i++)
        {             
            listBox2.Items.Add("item" + i);
        }
    }

    private void btnSave_Click(object sender, EventArgs e)
    {` 

        if (listBox2.Items.Count >0)
        {
            string message = "";
            foreach (var item in listBox2.Items)
            {
                message += item + "\n";
            }
            MessageBox.Show(message);
        }`
        /// write here the code that save listbox1 and listbox2 items
        /// to a text file or a database table and load this text file or 
        /// the database table inside these two listboxes you could write the 
        /// code that load data to the two list boxes in the constructor instead
        /// of the tow for loops thats i've provided.
    }

    private void btnAdd_Click(object sender, EventArgs e)
    {
        try
        {
            if (!listBox2.Items.Contains(listBox1.SelectedItem))
            {
                listBox2.Items.Add(listBox1.SelectedItem);
                listBox1.Items.Remove(listBox1.SelectedItem);
            }
            else
            {
                MessageBox.Show("Item already exists");
            }
        }
        catch (ArgumentNullException exc)
        {
            MessageBox.Show("Nothing selected to add");

        }         
    }

    private void btnRemove_Click(object sender, EventArgs e)
    {
        try
        {
            if (!listBox1.Items.Contains(listBox2.SelectedItem))
            {
                listBox1.Items.Add(listBox2.SelectedItem);
                listBox2.Items.Remove(listBox2.SelectedItem);
            }
            else
            {
                MessageBox.Show("Item already exists");
            }

        }
        catch (ArgumentNullException exc)
        {

            MessageBox.Show("Nothing selected to remove");
        }

    }
}

надеюсь, это то, что вы искали :) Спасибо.

19.02.2016

2

Это вывод изображения:

введите здесь описание изображения

и ваш код ниже. Я надеюсь, что это будет полезно для вас.

public partial class Form1 : Form
{
    ArrayList Table1;
    ArrayList Table2;
    bool isSaved = false;
    public Form1()
    {
        InitializeComponent();
        Table1 = new ArrayList();
        Table2 = new ArrayList();

        Table1.Add("Value1");
        Table1.Add("Value2");
        Table1.Add("Value3");
        Table1.Add("Value4");
        Table1.Add("Value5");           
    }
    private void populateListBox1() {
        for (int i = 0; i < Table1.Count;i++)
        {
            listBox1.Items.Add(Table1[i]);
        }
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        populateListBox1();          
    }
    private void refreshListBox1() {
        listBox1.Items.Clear();
        populateListBox1();  
    }
    private void addToRight() {
        try
        {
            listBox2.Items.Add(Table1[listBox1.SelectedIndex]);
            Table1.RemoveAt(listBox1.SelectedIndex);
        }
        catch 
        {
            MessageBox.Show("You have to select an item first !");
        }

        refreshListBox1();
    }
    private void removeFromRight(){
        if (isSaved)
        {
            try
            {
                listBox1.Items.Add(Table2[listBox2.SelectedIndex]);
                Table1.Add(Table2[listBox2.SelectedIndex]);
                isSaved = false;
            }
            catch 
            {
                MessageBox.Show("You have to select an item first !");
                isSaved = true;
            }
            try
            {
                Table2.RemoveAt(listBox2.SelectedIndex);
                listBox2.Items.RemoveAt(listBox2.SelectedIndex);
                isSaved = false;
            }
            catch 
            {
                if(listBox2.Items.Count==0)
                MessageBox.Show("This list is an empty list");
                isSaved = true;
            }

        }
        else {
            MessageBox.Show("You have to click save button first !");
        }

    }
    private void saveToTable2() {
        for (int i = 0; i < listBox2.Items.Count;i++)
        {
            Table2.Add(listBox2.Items[i].ToString());
        }
        MessageBox.Show("Saved !");
        isSaved=true;           
    }
    private void btn_add_Click(object sender, EventArgs e)
    {
        addToRight();
    }

    private void btn_save_Click(object sender, EventArgs e)
    {
        saveToTable2();           
    }

    private void btn_remove_Click(object sender, EventArgs e)
    {
        removeFromRight();
    }
}

}

19.02.2016
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]