2014-02-04 4 views
1

У меня есть приложение, в котором есть несколько вкладок. Один из них создает несколько групповых ящиков, и в каждом из этих групповых ящиков мне нужно 10 переключателей от 1 до 10. Моя проблема в том, что я не могу заставить переключатель переключаться и работать правильно. Когда я создам их, если я добавлю их в текущие элементы управления вкладками, все переключатели будут отображаться, но winform рассматривает их все как один набор радиостанций.динамически созданные переключатели не отображаются

Мне нужно, чтобы переключатели в каждом групповом ящике были набором. Если я добавлю кнопки в групповой ящик, радиокнопки не будут отображаться. Я играл с порядком, в котором я добавляю радиокнопку в групповой ящик, вызываю переключатель show(), добавляем групповой пакет в элемент управления вкладками и вызываем метод группового ящика, но независимо от того, какую конфигурацию я пытаюсь использовать, я могу Кажется, чтобы кнопки переключателей отображались. Я также попытался изменить childIndex переключателя, но это тоже не сработало.

Некоторые из вас могут предложить просто использовать раскрывающийся список или upDownNumaric, но на самом деле у меня есть рабочий стол UpDownNumaric, но клиент хочет, чтобы он был изменен на набор переключателей. Код, который у меня есть:

groupBoxLocation.Y += 45; 
GroupBox newGroupBox = new GroupBox(); 

newGroupBox.Location = groupBoxLocation; 
newGroupBox.Text = reader["Description"].ToString().Trim(); 
newGroupBox.Size = new Size(425, 40); 
newGroupBox.Name = ("PS_L_" + newGroupBox.Text).Replace(" ", "").Trim(); 


RadioButton rateValue; 


radioButtonsLocation = new Point(newGroupBox.Location.X - 30, newGroupBox.Location.Y + 15); 

tabControl1.TabPages[3].Controls.Add(newGroupBox); 

newGroupBox.Show(); 
for (int i = 0; i < 10; ++i) 
{ 
    rateValue = new RadioButton(); 
    radioButtonsLocation = new Point(radioButtonsLocation.X + 41, radioButtonsLocation.Y); 

    rateValue.Location = radioButtonsLocation; 
    rateValue.Text = (i + 1).ToString().Trim(); 
    rateValue.Width = 40; 
    rateValue.Name = "PI_V_" + newGroupBox.Text.Replace(" ", "") + "_" + i; 

    newGroupBox.Controls.Add(rateValue); 
    newGroupBox.Controls[rateValue.Name].Show(); 

} 

ответ

2

Проблема заключается в вашей инициализации radioButtonsLocation. Эти места по отношению к их родителям, а не относительно корневого контейнера, поэтому попробуйте изменить

radioButtonsLocation = new Point(newGroupBox.Location.X - 30, newGroupBox.Location.Y + 15); 

в

radioButtonsLocation = new Point(0,10); 

или какой-то подобная точку на основе того, как вы хотите, чтобы ваш пользовательский интерфейс, чтобы посмотреть.

+0

Я не могу поверить, что я забыл об этом, но спасибо за помощь. –

+0

Случается для всех нас - я программировал 10 лет, и мне пришлось спросить у коллеги разницу между 'break' и' continue', потому что я просто не мог вспомнить. – AWinkle

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