MahmoudOmar Ответов: 1

Галку.проверено в сетке между двух столбцов в C# win приложение.


У меня есть два столбца типа checkbox в виде сетки. Как, когда я проверяю столбец 1, столбец 2 может стать непроверенным и наоборот.
Я пытаюсь написать этот код, но у меня может быть много проблем:-
Private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
   DataGridViewCheckboxCell Ch1= new DataGridViewCheckboxCel();
   DataGridViewCheckboxCell Ch2= new DataGridViewCheckboxCel();
   
   Ch1 = (DataGridViewCheckboxCell)dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0];
 Ch2 = (DataGridViewCheckboxCell)dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0];

   if(ch1.Value == null)
      ch1.Value = false;
   elseif(Ch2.Value != null)
      Ch2.Value = false;

  switch(ch1.Value.ToString())
  {
     Case 'True':
                Ch1.Value = false;
                breake;
     Case 'False':
                if(Convert.ToBoolean(Ch1.Value) == false)
                   Ch2.Value = false;
                break;
  }
 
}


Что я уже пробовал:

как я могу это сделать, как переключатель и спасибо

Maciej Los

Какие проблемы?
Проверьте это: http://stackoverflow.com/questions/2885391/datagridview-checkbox-events

MahmoudOmar

у меня есть два столбца в gridview этот столбец это флажок вот так,

Имя водителя , отсутствие, отпуск
------------ ------- --------
ФИО1 1 0
Имя 2 0 1
Имя 3 1 0
Имя 4 1 0

я хочу, чтобы при проверке отсутствия отпуск стал ложным, а при проверке отпуска отсутствие стало ложным.
Как я это делаю.
пожалуйста, скажите мне, если вы меня не понимаете.

Maciej Los

Я понимаю, что вы пытаетесь сделать, но не понимаю, какие у вас проблемы.
С другой стороны, зачем вам нужны 2 колонки? Отпуск - это разновидность отсутствия. Итак, почему вы хотите хранить эти значения в 2 разных столбцах?
[РЕДАКТИРОВАТЬ]
Проверить это: Создайте пользовательскую ячейку и столбец RadioButton для элемента управления DataGridView
и
Datagridview пользовательский столбец типа ListView или CheckedListBox

MahmoudOmar

Во-первых : - это несколько столбцов, а не 2 столбца, это просто пример,
во-вторых: - я не нахожу переключатель в типе столбца вида сетки, поэтому я использовал флажок

1 Ответов

Рейтинг:
0

RickZeeland

Я могу порекомендовать использовать BindingSource, видеть Подробное Руководство По Привязке Данных
Подробное Руководство По Привязке Данных[^]

Чтобы получить или установить значение:

private void DataGridView1CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
	switch (this.DataGridView1.Columns[e.ColumnIndex].Name)
	{
		case "Absence":
			bool flag = (bool)this.DataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
			this.DataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex + 1].Value = !flag;
			break;
		case "vacation":
			bool flag = (bool)this.DataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
			this.DataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex - 1].Value = !flag;
			break;
	}
}


MahmoudOmar

у меня есть два столбца в gridview этот столбец это флажок вот так,

Имя водителя , отсутствие, отпуск
------------ ------- --------
ФИО1 1 0
Имя 2 0 1
Имя 3 1 0
Имя 4 1 0

я хочу, чтобы при проверке отсутствия отпуск стал ложным, а при проверке отпуска отсутствие стало ложным.
Как я это делаю.
пожалуйста, скажите мне, если вы меня не понимаете.

RickZeeland

Смотрите обновленное решение !