Аналог диалогового окна InputBox (Builder C++) в .NET (C#)

01 Апр 2010

Я уже писал тут, что был в моей программерской жизни момент, когда я изучал технологию .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("Отмена действий.");

Запускаем проект на выполнение. Нажимаем кнопку, вводим значение в наше диалоговое окно и радуемся результату =)

Скриншоты работы моей программы:

InputBox

Результат выполнения программы

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

В блоге кибергения узнай самое интересное из мира технологий и интернета

Забобрить!
Запомнить эту страницу на Закладок.нет!
www.vaau.ru
Уважаемый читатель! Если мой блог Вам понравился, то предлагаю подписаться на обновление по RSS или по E-mail. У меня так же есть аккаунт в Twitter, за которым Вы можете следовать.

3 комментария

# mihey оставил(а) комментарий 05 Сен 2011 в 10:51

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

Ответить

Добавить комментарий

Псевдоним*:
Эл. почта*:
Сайт: