Лабораториска вежба 3 - finki-mk/VP GitHub Wiki

Windows forms - Нарачка на пица

Конечен изглед на апликацијата

Конечен изглед на апликацијата

Додавање на контролите

Во оваа вежба ќе ги употребуваме следните контроли:

  • Label Label
  • TextBox TestBox
  • RadioButton RadioButton
  • CheckBox CheckBox
  • ListBox ListBox
  • Button Button
  • GroupBox GroupBox

Големина и порамнување на контролите

Со притиснато Ctrl може да се селектираат повеќе контроли одеднаш и да се постави некоe својство кое ќе важи за сите нив.

Селекција на повеќе контроли одеднаш

Кога се селектирани повеќе контроли со помош на алатникот за порамнување и подредување на контролите може да се подобри нивниот визуелен изглед.

Align Toolbar

Подредување за таб навигација (TabOrder)

Преку менито View -> Tab Order се добива следниот поглед:

Tab Order на контролите во апликацијата

Подредувањето се прави со последователен лев клик на контролите во редослед во кои сакаме да ги подредиме.

Поставување на почетните вредности

Почетните вредности на контролите погледнете ги од конечниот изглед на апликацијата на слика 1.

За додавање на ставки во листата со десерти кликнете на (Play) копчето прикажано на следната слика и кликнете EditItems.

Додавање ставки во ListBox

Програмирање на бизнис логиката

Апликацијата треба при секој промена од страна на корисникот на вредностите на контролите:

  • избор на пица
  • менување на цените на пиците
  • избор на додатоци
  • менување на цените на додатоците
  • менување на количината или цените на пијалоците
  • менување на селекција од листата со десерти и менување на цената на десертот

да ја промени вкупната цена на нарачката.

За таа цел ќе додадеме еден привате метод кој во зависност од состојбата на контролите ќе ја обновува вредноста на контролата за прикажување на вкупната цена на нарачката.

За превземање на вредностите од контролите го пристапуваме својството Text. Ова својство е од тип string, затоа кога сакаме да го претвориме во соодветен тип за претставување на броеви (int, float, double, decimal) треба да го парсираме. Еден начин да се направи тоа е со следниот метод:

 float f = 0;
 float.TryParse(controlName.Text, out f);

Притоа овој метод враќа bool променлива дали успеало конвертирањето. Доколку не успее вредноста на променливата f ќе остане иста (0).

Додадете и имплементирајте го следниот метод за пресметување на вкупната цена на нарачката:

public void calculateTotal()
{
   // ... vasiot kod ovde ...
}

Програмирање на настаните

Откако го имплементиравме методот кој ја пресметува вкупната цена на нарчаката и ја поставува оваа вредност на контролата за приказ на вкупната цена, треба да се повика овој метод на соодветните настани. Настаните кои треба да се испрограмираат се следните:

  • CheckedChanged - се случува секогаш кога вредноста Checked се менува (стандарден настан за RadioButton и CheckBox)
  • TextChanged - се случува секогаш кога се менува вредноста на својството Text на TextBox контролата

Методите кои може да се повикаат кога се случува некој настан ја имаат следната дефиниција:

private void controlName_EventName(object sender, EventArgs e)
{

}

Затоа што дефиницијата на методите за сите настани и сите контроли е иста, еден ваков метод може да се повикува за повеќе различни настани и од повеќе контроли. Додавање на ваков метод може да се направи рачно, а може и преку двоен клик на контролата за која сакаме да го додадеме или со двоен клик во празното поле во листата со настани за контролата. Двоен клик на контролата секогаш додава настан за еден (најчесто употребуван) настан настан за таа контрола.

Листа со настани

За сите останати настани и тоа како треба да функционира апликацијата изврешете ја финалната апликација.

MessageBox

MessageBox е класа со статични методи кои креираат едноставни дијалог прозорци кои прикажуваат кратки пораки или пак означуваат знајни моменти во извршувањето на апликацијата. Во оваа апликација еден таков метод треба да се повика при клик на копчето Откажи. Прикажувањто на соодветниот MessageBox се прави со следниот код:

 DialogResult result = MessageBox.Show("Dolga poraka", "Naslov na dijalogot", 
                MessageBoxButtons.YesNo, // vid na dijalogot 
                MessageBoxIcon.Question); // ikona na dijalogot
 if (result == DialogResult.Yes)
 {
    Application.Exit();
 }

Поставување на AcceptButton и CancelButton

Секоја форма има две својства кои ги означуваат копчињата чии што Click настани се активираат на одредни копчиња од тастатурата.

AcceptButton го означува копчето чии што клик настан ќе се испали кога ќе се притесне ENTER копчето.

CancelButton го означува копчето чии што клик настан ќе се испали кога ќе се притисне ESC копчето.

Извршна верзија