Как добавить выбранные события в сотни радиобутонов - PullRequest
0 голосов
/ 02 ноября 2018

введите описание изображения здесь Как показано на рисунке, каждые пять радиокнопок помещаются в стековую панель. Чего я хочу добиться - при нажатии радиокнопки номер на выбранной радиокнопке сохраняется в базе данных по порядку. Если есть тысячи радиокнопок, неэффективно добавлять события одно за другим. Как я могу сделать это быстро?

   <StackPanel Orientation="Horizontal" Grid.Column="2" Grid.Row="1">
                        <RadioButton Grid.Column="2" Margin="0,0,10,0" Style="{StaticResource radBase}" Grid.Row="1" VerticalAlignment="Center"  Name="a131"/>
                        <RadioButton Grid.Column="2" Margin="0,0,10,0" Style="{StaticResource radBase2}" Grid.Row="1" VerticalAlignment="Center" Name="a132"/>
                        <RadioButton Grid.Column="2" Margin="0,0,10,0" Style="{StaticResource radBase3}" Grid.Row="1" VerticalAlignment="Center" Name="a133"/>
                        <RadioButton Grid.Column="2" Margin="0,0,10,0" Style="{StaticResource radBase4}" Grid.Row="1" VerticalAlignment="Center" Name="a134"/>
                        <RadioButton Grid.Column="2" Margin="0,0,10,0" Style="{StaticResource radBase5}" Grid.Row="1" VerticalAlignment="Center" Name="a135"/>

                    </StackPanel>
                    <StackPanel Orientation="Horizontal" Grid.Column="3" Grid.Row="1">
                        <RadioButton Grid.Column="2" Margin="0,0,10,0" Style="{StaticResource radBase}" Grid.Row="1" VerticalAlignment="Center"  Name="b131"/>
                        <RadioButton Grid.Column="2" Margin="0,0,10,0" Style="{StaticResource radBase2}" Grid.Row="1" VerticalAlignment="Center" Name="b132"/>
                        <RadioButton Grid.Column="2" Margin="0,0,10,0" Style="{StaticResource radBase3}" Grid.Row="1" VerticalAlignment="Center" Name="b133"/>
                        <RadioButton Grid.Column="2" Margin="0,0,10,0" Style="{StaticResource radBase4}" Grid.Row="1" VerticalAlignment="Center" Name="b134"/>
                        <RadioButton Grid.Column="2" Margin="0,0,10,0" Style="{StaticResource radBase5}" Grid.Row="1" VerticalAlignment="Center" Name="b135"/>

                    </StackPanel>



     if (a131.IsChecked == true) { all1 += "1"; }
            if (a132.IsChecked == true) { all1 += "2"; }
            if (a133.IsChecked == true) { all1 += "3"; }
            if (a134.IsChecked == true) { all1 += "4"; }
            if (a135.IsChecked == true) { all1 += "5"; }
 MySqlCommand cmd = new MySqlCommand();
            cmd.CommandText = "insert into fu(id,zuofen,youfen)values(@id,@left,@right)";
            cmd.Connection = conn;
            cmd.Parameters.Add("@id", MySqlDbType.Int64);

            cmd.Parameters.Add("@left", MySqlDbType.VarChar, 50);
            cmd.Parameters.Add("@right", MySqlDbType.VarChar, 50);

            cmd.Parameters["@id"].Value = bb;

            cmd.Parameters["@left"].Value = all1;
            cmd.Parameters["@right"].Value = all2;

1 Ответ

0 голосов
/ 02 ноября 2018

Проблема здесь в том, что у вас есть много почти идентичных обработчиков событий, единственное отличие - это идентификатор элемента управления, a131 / b131 и, возможно, a141 / b141 для следующей строки.

Поскольку строки (каждая с 5 RadioButtons слева и 5 справа) одинаковы, вы можете определить UserControl для строки.

Таким образом, вместо множества почти идентичных обработчиков событий вам нужно определить только один обработчик событий в UserControl.

Для значения id, которое вы использовали в команде SQL, я думаю, вы используете его, чтобы указать, какая строка нажата. Вы можете установить значение id для каждого свойства Tag в UserControl, чтобы получить доступ к значению id из обработчика событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...