Передавать значение, если установлен флажок

#c# #checkbox

#c# #флажок

Вопрос:

У меня есть форма, в которой есть несколько текстовых полей (45) с флажками рядом с каждым и кнопка. При нажатии кнопки я хочу передать значения каждого текстового поля, в котором установлен флажок, в void в другом классе, а те, которые не отмечены, передают нулевое значение.

Что у меня есть на данный момент, так это: Form1

 private void button_Click(object sender, EventArgs e)
{
String Value1;
if (value1CheckBox.Checked)
{
    Value1 = value1TextBox.Text;
}
else
{
    Value1 = null;
}

String Value2;
if (value2CheckBox.Checked)
{
    Value2 = value1TextBox.Text;
}
else
{
    Value2 = null;
}

etc...

Form2 form2 = new Form2();
form2.insertSQL(Value1, Value2, etc...);
}
  

Form2

 private void insertSQL(String Value1, String Value2, String etc...)
{
    /*
    Code to insert to SQL database
    */
}
  

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

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

1. вы можете создать массив флажков, который содержит все имеющиеся у вас флажки, затем вы можете зациклить этот массив или просто передать массив в другую форму

Ответ №1:

Хорошей идеей было бы сохранить все ваши флажки и текстовые поля в словаре. Конкретный словарь, который вам нужно будет создать, будет:

Проверка текста словаря = новый словарь();

Затем поместите каждое сопоставление пары флажок / текстовое поле в словарь.

Наконец, в методе button_Clicked создайте цикл, который перебирает каждую пару ключ / значение в вашем словаре:

 foreach (KeyValuePair<CheckBox, TextBox> pair in checkToText)
{
//do what you need to do
//pair.Key for checkbox
//pair.Value for textbox
}
  

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

1. Спасибо, мне потребовалось некоторое время, чтобы разобраться, как это сделать, но как только я это запустил, я вижу, что это просто и дозировать именно то, что я хочу.

Ответ №2:

Я думаю, что ограничение, к которому вы приближаетесь, заключается в том, что непроверенные флажки не передаются как часть формы post.

Вы можете собрать javascript, который по щелчку мыши соберет некоторый JSON и поместит его в скрытое значение, затем десериализует JSON из скрытого значения (в вашем серверном коде). Это позволит вам установить значение null для текстовых полей без необходимости перебирать поля формы на стороне сервера.

Удобство обслуживания будет определяющим фактором для вашего решения, передавать ли это на серверную часть или делать это на стороне клиента, как я описал.

Кроме того, не забудьте очистить данные перед созданием SQL (как следует из названия вашей серверной функции). Вы не можете доверять этим данным!