chinu1d Ответов: 2

Как перебирать флажки, удерживаемые в groupbox в правильном порядке (возрастающий порядок)


вот мой код(часть кода)

SqlCommand cmd = new SqlCommand ("SELECT * FROM SEATING", cs);
Sqldatareader reader = cmd.Метода executereader();
foreach (var c в groupBox1. Controls)
{

читатель.Читать();
Флажок "темп" = (галочку)с;
int seat = читатель.GetInt32(0);
int status = reader.GetInt32(2);

if (status == 1 & & amp; seat = = Convert.ToInt32(темп.AccessibleName))
{
температура.Проверено = истина;
темп.Включен = ложь;
}


}

это делает работу, то есть помечает флажки как проверенные, если их статус равен 1, и отключает их, но порядок, в котором они отключаются, обратный( то есть от конца к началу)
проблема заключается в том, что цикл foreach начинает итерацию с конца
можете ли вы помочь мне сделать так, чтобы он повторялся с самого начала?

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

Ну я читал о чем то под названием LINQ но не понял этого

F-ES Sitecore

Foreach не повторяется с конца. Более вероятно, что ваш "select *" извлекает записи в другом порядке, чем groupBox1, поскольку ваш код подразумевает, что они имеют одинаковый порядок, но мы не знаем, как генерируется groupBox1. Возможно, Вам просто нужно добавить правильное предложение "заказ", это невозможно сказать из того, что вы опубликовали.

2 Ответов

Рейтинг:
7

FranzBe

Альтернативой установке порядка вкладок может быть что-то вроде этого:
1) вы извлекаете флажки из коллекции элементов управления groupBox и сортируете их, например, по имени

      List<CheckBox> listCheckboxesOrderedByName = 
        groupBox1.Controls
          .Cast<CheckBox>()
          .OrderBy(c => c.Name)
          .ToList();


foreach (var c in listCheckboxesOrderedByName )
{
  // 2) now this loop runs through the checkboxes 
  // that have been sorted by name

}


chinu1d

нет я имел в виду что я не понял использование LINQ can u help me doing it with the foreach loop only

chinu1d

Спасибо вам это помогло

Рейтинг:
1

CPallini

Если вам нужно выполнить итерацию в порядке табуляции, то используйте Контроль.Метод GetNextControl (Control, Boolean) (System.Окна.Формы)[^].