2012-02-10 3 views
2

У меня есть форма выигрыша, на которой есть несколько кнопок и меток, и некоторые другие элементы управления, которые я генерирую во время выполнения. Не то, что я хочу, когда я проверяю радиокассету, все радиоисточники должны быть сняты, кроме той, которую я проверил. Это относится к каждому радиообъекту. Короче говоря, я хочу, чтобы один лучевой переключатель проверялся одновременно.Предотвратите щелчок мышью

private RadioButton GenerateRadioButton(string id) 
     { 
      RadioButton _radioButton = new RadioButton(); 
      _radioButton.Location = new Point(32, 20); 
      _radioButton.Margin = new Padding(4, 4, 4, 4); 
      _radioButton.Size = new Size(130, 36); 
      _radioButton.Name = id; 
      _radioButton.AutoSize = true; 
      _radioButton.Font = new Font("Arial", 16, FontStyle.Bold); 
      _radioButton.CheckedChanged += new System.EventHandler(RadioButton_CheckedChanged); 
      return _radioButton; 
     } 

    private void RadioButton_CheckedChanged(object sender, EventArgs e) 
     { 
      HandleRadioButtinClick(((RadioButton)sender).Name); 
      ((RadioButton)sender).Checked = true; 
     } 

    private void HandleRadioButtinClick(string ctrlId) 
      { 
       FrmSpace objFrmSpace = new FrmSpace(); 
       foreach (Control ctrl in pictureBox1.Controls) 
       { 
        if (ctrl is Panel) 
        { 
         foreach (Control ctl in ctrl.Controls) 
         { 
          if (ctl is RadioButton && ctl.Name != ctrlId) 
           ((RadioButton)ctl).Checked = false; 
         } 
        } 
       } 
      } 

Это код выше. Проблема с этим кодом заключается в том, что когда я проверяю радиообъект, если есть какая-либо другая радиообъект, которая проверяется, и я пытаюсь снять ее, это событие с измененным изменением также будет запущено, что снова отключит все радиообъект. Надеюсь, я понимаю, что хочу передать.

Пожалуйста, предоставьте некоторое решение.

Благодаря

+0

Почему вы вручную отключаете радиокнопки? Почему бы вам не сгруппировать их, которые будут обрабатывать эту часть. –

+0

Я хотел бы это сделать. Но не могли бы вы рассказать, как сгруппировать их при их создании во время выполнения? –

+0

Добавляя их в форму, добавьте их в поле группы вместо формы. –

ответ

1

Вы пробовали использовать groupbox для всех радиокнопок? Это функция по умолчанию, о которой вы просите.

EDIT: уточнить ваши вопросы

 // some function 
     GroupBox g = createGBox(); 
     this.Controls.Add(g); 
     g.Controls.Add(radioButton1); 
     g.Controls.Add(radioButton2); 
    } 

    public GroupBox createGBox() 
    { 
     GroupBox gBox = new GroupBox(); 
     gBox.Location = new System.Drawing.Point(72, 105); 
     gBox.Name = "BOX"; 
     gBox.Size = new System.Drawing.Size(200, 100); 
     gBox.Text = "This is a group box"; 
     return gBox; 
    } 
+0

У меня есть картинка, затем я создаю панели во время выполнения и добавляю их в окно с картинками. Затем я создаю ярлык и радиобуй, затем добавляю их в панель. Каждая панель имеет набор из одного радиобъектива и одного ярлыка. –

+0

Groupbox по-прежнему сможет работать. Просто замените групповой ящик вместо панели, на которой расположены радиокнопки. Проверьте ссылку. В Groupbox есть встроенная метка, которую вы также можете использовать. – Jeremy

+0

Есть ли какое-либо свойство для группового ящика, которое мне нужно настроить. На самом деле его не работает. Тот же результат, что и панель. –

0

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

Надеюсь, это поможет.

+0

Если я возьму групповой пакет во время разработки и добавлю панели (содержащие радиообъект и метки) во время выполнения этого группового поля. Это будет работать? –

+0

Имо, нет, вам нужен GroupBox, как основной родитель. Почему вы хотите использовать панель? Добавьте прямо в GroupBox. – Tigran

Смежные вопросы