Изграждане на графичен потребителски интерфейс с Windows Forms



страница7/16
Дата27.09.2016
Размер1.09 Mb.
#10985
1   2   3   4   5   6   7   8   9   10   ...   16

Диалогови кутии


При разработката на Windows Forms приложения често пъти се налага да извеждаме диалогови кутии с някакви съобщения или с някакъв въпрос. Нека разгледаме стандартните средства за такива ситуации.

Стандартни диалогови кутии


Класът MessageBox ни позволява да извеждаме стандартни диалогови кутии, съдържащи текст, бутони и икони:

  • съобщения към потребителя

  • въпросителни диалози

Показването на диалогова кутия се извършва чрез извикване на статич­ния метод Show(…) на класа MessageBox. Следният код, например, ще покаже диалогова кутия със заглавие "Предупреждение" и текст "Няма връзка с интернет":

MessageBox.Show("Няма връзка с Интернет.", "Предупреждение");

Ето как изглежда диалоговата кутия:

Нека разгледаме още един пример за стандартна диалогова кутия с малко повече функционалност:



bool confirmed =

MessageBox.Show("Наистина ли ще изтриете това?",

"Въпрос", MessageBoxButtons.YesNo,

MessageBoxIcon.Question) == DialogResult.Yes;



Този код ще покаже диалогова кутия със заглавие "Въпрос" и текст "Наистина ли ще изтриете това?". Преди текста ще има икона с въпросителен знак в нея, а под него – бутони Yes и No. Ако потребителят натисне Yes, променливата confirmed ще има стойност true, в противен случай ще има стойност false. Ето как изглежда диалоговата кутия от примера:

Повече информация за класа MessageBox може да се намери в MSDN.


Извикване на диалогови кутии


Освен стандартните диалогови кутии, можем да използваме и потреби­телски дефинирани диалогови кутии. Те представляват обикновени форми и се извикват модално по следния начин:

DialogResult result = dialog.ShowDialog();

Методът ShowDialog() показва формата като модална диалогова кутия. Типът DialogResult съдържа резултата (OK, Yes, No, Cancel и др.) от извикването на диалога. Задаването на DialogResult може да става авто­матично, чрез свойството DialogResult на бутоните или ръчно – преди затварянето на диалога чрез свойството му DialogResult.



Ако извиквате форма модално, след това задължително трябва да й извиквате Dispose() метода за да освободите ресурсите, които тя е използвала. В противен случай те ще се освободят едва когато се активира Garbage Collector и ще се използват ненужно дълго.

DialogResult и предаване на данни между диалози – пример


С настоящия пример ще илюстрираме използването на диалози в Windows Forms, ще покажем как диалозите могат да се извикват един друг и как могат да си предават данни.

В примера ще създадем един диалог съдържащ текстово поле за въвеж­дане на име и два бутона – OK и Cancel. Този диалог ще се показва при натискане на бутон от главната форма. Ако потребителят въведе име и натисне OK, ще се показва диалог, съдържащ въведеното име, а ако потребителят затвори диалога, натискайки Cancel, ще се появи диалог указващ, че е натиснат Cancel.

Ето и стъпките за изграждане на нашия пример:


  1. Стартираме VS.NET и създаваме нов Windows Forms проект. В редактора се появява главната форма на приложението. На нея ще се спрем след малко.

  2. Създаваме нова форма (File | Add New Item … | Windows Form). Сменяме името й на DialogForm, а името на нейния файл – на DialogForm.cs. Задаваме на свойствата й MinimizeBox и MaximizeBox стойности false, а на свойството FormBorderStyle стойност FixedDialog. Тази форма ще служи за въвеждане на името на потребителя.

  3. Вземаме от Toolbox на VS.NET една Label, една TextBox и две Button контроли и ги подреждаме върху формата. Задаваме им подходящи имена. В нашия случай подходящи са имената: LabelYourName, TextBoxName, ButtonOK и ButtonCancel.

  4. Задаваме свойството Text на LabelYourName да е "Enter your name:", на ButtonOk да е "OK", на ButtonCancel да е "Cancel", а на TextBoxName – празен низ.

  5. Задаваме на свойството DialogResult на бутона ButtonOk стойност OK. По този начин при натискането му формата ще се затвори и ще бъде върнат резултат DialogResult.OK. Аналогично на свойството DialogResult на бутона ButtonCancel задаваме стойност Cancel. Ето как изглежда нашият диалог:



  1. Остава да добавим на тази форма едно свойство UserName, което да извлича съдържанието на текстовото поле за въвеждане на потребителско име:

    public string UserName

    {

    get



    {

    return TextBoxName.Text;

    }

    }


  2. Поставяме върху главната форма бутон с име ButtonCallDialog и задаваме на свойството му Text стойност "Call Dialog". Чрез този бутон ще извикваме диалога, който създадохме по-рано.

  3. Добавяме обработчик на събитието Click на бутона:

private void ButtonCallDialog_Click(object sender,

System.EventArgs e)

{

DialogForm dialog = new DialogForm();



if (dialog.ShowDialog() == DialogResult.OK)

{

string userName = dialog.UserName;



MessageBox.Show("You entered: " + userName);

}

else



{

MessageBox.Show("You canceled the dialog.");

}

dialog.Dispose();



}

В него първо създаваме инстанция на DialogForm. След това извик­ваме модално формата DialogForm и проверяваме дали е била затво­рена с бутона OK чрез върнатия DialogResult. Ако е така, извличаме от DialogForm свойството UserName, с което взимаме въведеното в нея име и го показваме в диалогова кутия. Ако не е бил натиснат бутонът OK, това означава, че е бил натиснат бутонът Cancel. В този случай показваме диалогова кутия, указваща, че е натиснат бутон Cancel.

  1. Задаваме на главната форма име MainForm и заглавие "Main Form". Променяме и името на файла от Form1.cs на MainForm.cs.

  2. Нашето приложение е готово и можем да го стартираме и тестваме:





Сподели с приятели:
1   2   3   4   5   6   7   8   9   10   ...   16




©obuch.info 2024
отнасят до администрацията

    Начална страница