Аналог диалогового окна InputBox (Builder C++) в .NET (C#)
Я уже писал тут, что был в моей программерской жизни момент, когда я изучал технологию .NET, в частности язык программирования C#. Так как до этого я кодил на C++ Bulder, то очень привык использовать для ввода некоторых данных диалоговое окно, которое вызывается функцией InputBox(). Как оказалось, в библиотеке .NET такой удобной штуки нету и мне пришлось реализовывать её вручную. Писал эту статью давно, а сейчас решил выложить на этом блоге. Среду разработки использовал Visual Studio 2005.
Создаём проект Visual C#, WindowsApplication и добавляем в него еще одну форму как показано на Рисунке.
На новой форме создаём две кнопки (Ok и Cancel), текстовое поле для ввода необходимого значения и метку. Выставляем свойства формы MaximazeBox, ControlBox и MinimizeBox в false, что сопровождается блокированием кнопок сворачивания, развертывания и закрытия окна.
Должно получиться подобное:

Теперь открываем класс второй формы и редактируем его: вставляем новую функцию, описываем события нажатия кнопок, добавляем необходимые переменные. Получившийся класс описан далее:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | public partial class InputBox : Form { public InputBox() { InitializeComponent(); } bool t; // Если была нажата кнопка Ok тогда t = true // если была нажата кнопка Cancel или в текстовое поле ничего не введено, то t = false String temp; public static bool Input( String IBhead, // заголовок формы String IBlabel, // текст, который будет отображен в lable1 out String s // значение введенное в текстовое поле, вернется из метода ) { InputBox IBform = new InputBox(); // создаём форму IBform.Text = IBhead; // меняем текст заголовка формы IBform.label1.Text = IBlabel; // меняем текст метки IBform.ShowDialog(); // показываем форму s = IBform.temp; // возвращаем введнное значение в s return IBform.t; } private void button1_Click(object sender, EventArgs e) // Ok { temp = this.textBox1.Text; t = true; this.Close(); } private void button2_Click(object sender, EventArgs e) // Cancel { t = false; this.Close(); } } |
Теперь протестируем наш InpuBox. На главную форму добавим кнопку и метку. Событие нажатия кнопки опишем следующим образом:
1 2 3 4 5 | String str; if (InputBox.Input("Ввод значения", "Введите значение a:", out str)) label1.Text = str; else System.Windows.Forms.MessageBox.Show("Отмена действий."); |
Запускаем проект на выполнение. Нажимаем кнопку, вводим значение в наше диалоговое окно и радуемся результату =)
Скриншоты работы моей программы:


ПС: Бедный Студент проводит акцию БЕСПЛАТНЫЙ обзор каждому желающему
В блоге кибергения узнай самое интересное из мира технологий и интернета



Спасибо!!!
ОтветитьДелал подобное не раз.
Но этот вариант более универсален и удобен.