#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. Не работает, как я уже сказал, когда для его проверки добавляются значения, но когда флажок снят, значения не удаляются