Я хочу добавить значение флажка в DataGridView без базы данных на C#

#c# #.net #visual-studio

#c# #.net #visual-studio

Вопрос:

Я хочу добавить значение флажка в базу данных, используя список

   private List<Months> ShopingCart = new List<Months>();
  

Примечание: Месяцы — это класс, определяемый здесь

   public class Months
{
    [DisplayName("ID")]
    public string ItemId { get; set; }
}
  

Добавьте элементы в список месяцев, например

   Months items = new Months()
        {

            ItemId =GetObjc(),
        };
  

GetObjc() — это функция, подобная

  private string GetObjc()
    {
        string Month = String.Empty;
        if (checkBox1.Checked)
        {
            Month = "Apr";
        }

        if (checkBox2.Checked)
        {
            Month = "March";
        }

        if (checkBox3.Checked)
        {
            Month = "May";
        }
        if(checkBox4.Checked)
        {
            Month = "June";
        }
        if (checkBox5.Checked)
        {
            Month = "July";
        }


        return Month;
    }
  

Список добавить в GridView

  //List

        if (checkBox1.Checked || checkBox2.Checked)
        {
            ShopingCart.Add(items);
            dataGridView1.DataSource = null;
            dataGridView1.DataSource = ShopingCart;
        }
        else
        {
            ShopingCart.Remove(items);
            dataGridView1.DataSource = null;
            dataGridView1.DataSource = ShopingCart;
        }
  

** Теперь проблема в том, что когда я устанавливаю флажок, добавляется название месяца, а когда я снимаю флажок, то не удаляю из datagridview **

Я хочу, чтобы при снятии флажка данные флажка удалялись из Datagridview

Ответ №1:

Вы можете попробовать следующие шаги, чтобы решить эту проблему.
1. Дизайн формы: поместите groupBox в форму и установите в ней все флажки.

2. Логика кода:
а. Вы могли бы зарегистрировать CheckedChanged событие для всех флажков.
б. Если флажок установлен, ShopingCart добавляется текущее items . Если флажок снят, вы можете записать CheckBox.Name и найти соответствующий Month в соответствии с Name , тогда вы узнаете ItemId .Наконец, ShopingCart удаляет item соответствие ItemId .

Код выглядит следующим образом:

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;

namespace TestDemo
{     
public partial class Form1 : Form
{
    private List<Months> ShopingCart = new List<Months>();     
    public Form1()
    {
        InitializeComponent();
        foreach(CheckBox checkbox in groupBox1.Controls) 
        {             
                checkbox.CheckedChanged  = Checkbox_CheckedChanged;
        }           
    }
    private string GetObjc(string name)
    {
        string Month = String.Empty;
        switch (name) 
        {
            case "checkBox1": Month = "Apr"; break;
            case "checkBox2": Month = "March"; break;
            case "checkBox3": Month = "May"; break;
            case "checkBox4": Month = "June"; break;
            case "checkBox5": Month = "July"; break;
        }       
        return Month;
    }
    private void Checkbox_CheckedChanged(object sender, EventArgs e)
    {
        CheckBox send = (CheckBox)sender;
        string checkboxName = send.Name;
        string Month= GetObjc(checkboxName);
        Months items = new Months()
        {
            ItemId = Month,            
        };       
        if (send.Checked) 
        {                            
            ShopingCart.Add(items);
            dataGridView1.DataSource = null;
            dataGridView1.DataSource = ShopingCart;
        }
        else 
        {
            foreach (var item in ShopingCart) 
            {
                if (item.ItemId == Month)
                { 
                    ShopingCart.Remove(item);
                    break;
                } 
            }             
            dataGridView1.DataSource = null;
            dataGridView1.DataSource = ShopingCart;
        }     
    }
}
public class Months
{
    [DisplayName("ID")]
    public string ItemId { get; set; }
}   
}
  

Результат:

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

Ответ №2:

Вот мое решение. Я надеюсь, что это сработает.

 if (checkBox1.Checked || checkBox2.Checked)
{
        ShopingCart.Add(items);
        dataGridView1.DataSource = null;
        dataGridView1.DataSource = ShopingCart;
}
else if(checkBox1.Unchecked || checkBox2.Unchecked)
{
    ShopingCart.Remove(items);
    dataGridView1.DataSource = null;
    dataGridView1.DataSource = ShopingCart;
}
  

Комментарии:

1. Кроме того, вы можете проверить поведение флажка по этой ссылке на документы Microsoft: learn.microsoft.com/tr-tr/dotnet/framework/winforms/controls /…

2. Не работает, как я уже сказал, когда для его проверки добавляются значения, но когда флажок снят, значения не удаляются