Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Создать циклом много кнопок


Автор: blast99 10.10.2006, 14:20
Ребят, делаю вызов - мини-калькулятора(т.е. нужно манипулировать с int значением, но есть кнопка "вычислить значение" - зовется мелкая форма-каркулятор. Нужно быстро посчитать цифры и вернуть результат)
Соответсвенно нужно:
- диначески создать мелкую форму
- на ней с десяток кнопок и назначить обработчик some_function(id_button)
- вернуть int значение из вызванной формы...

Создать форму могу! На ней кнопку тоже:
Код

            Form fm = new Form();
            Button btn = new Button();
            btn.Text = "Hello";
            fm.Controls.Add(btn);
            fm.ShowDialog();

Но нужно много кнопок...
Вот нашел http://forum.vingrad.ru/index.php?showtopic=82547. Однако это большое приложение, а мне хочется создать форму-калькулятора. 
Если не сложно  smile 

Автор: ivashkanet 10.10.2006, 14:27
blast99, лучше всего нарисовать вручную новую форму. 
Но если все же хочешь динамически, то http://forum.vingrad.ru/index.php?showtopic=115034&view=findpost&p=878222.

Автор: blast99 10.10.2006, 14:36
Кажется то что надо! Сейчас попробую реализовать...

Автор: blast99 10.10.2006, 15:15
хм, а как мне вернуть int значение из вызванной формы?  smile 

Автор: ivashkanet 10.10.2006, 15:18
Цитата(blast99 @  10.10.2006,  15:15 Найти цитируемый пост)
хм, а как мне вернуть int значение из вызванной формы?  

А это уже тема для другой беседы smile 

P.S. Например, оставить его открытым и слизать после hide формы  smile 

Автор: blast99 10.10.2006, 15:22
хм, странно я думал созданные объекты уже удалены...
А оказывается вот так:
Код

            Form fm = new Form();
            
            Label lblText = new Label();
            lblText.Location = new Point(49, 90);
            lblText.Size = new Size(147, 20);
            lblText.Text = "Введите кол-во игроков:";
            
            ComboBox combo = new ComboBox();
            combo.Location = new Point(91, 125);
            combo.Size = new Size(36, 22);
            combo.Items.Add("1");
            combo.Items.Add("2");
            combo.Items.Add("3");
            combo.Items.Add("4");
            combo.SelectedIndex = 0;

            fm.Controls.Add(lblText);
            fm.Controls.Add(combo);

            fm.ShowDialog();
            MessageBox.Show(combo.SelectedItem.ToString() );

Автор: Naum 12.10.2006, 10:31
Цитата(blast99 @  10.10.2006,  16:22 Найти цитируемый пост)
хм, странно я думал созданные объекты уже удалены...
 Насколько я знаю дескрипторы окон являются unmanaged-ресурсами, поэтому их лучше удалять ручками через Dispose(). 

Автор: ivashkanet 12.10.2006, 10:38
Цитата(Naum @  12.10.2006,  10:31 Найти цитируемый пост)
Насколько я знаю дескрипторы окон являются unmanaged-ресурсами, поэтому их лучше удалять ручками через Dispose(). 

Врятли это относится к наследникам класса System.Windows.Form.

Цитата(blast99 @  10.10.2006,  15:22 Найти цитируемый пост)
хм, странно я думал созданные объекты уже удалены...

Они удаляются только когда в них отпадает надобность. А у тя fm ("указатель" на форму) все еще существует и умирать не собирается smile Зачем же тогда уничтожать форму? Может она тебе еще понадобится  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)