Создание Windows-приложений на основе Visual C#

         

Приложение "калькулятор"


Создайте новый проект (Windows Application) и назовите его Calculator. Устанавливаем следующие свойства формы:

Form1, форма, свойствоЗначение
NameCalc
FormBorderStyleFixed3D
Icon
Путь E:\Program Files\Microsoft Visual Studio .NET2003\Common7\Graphics\icons\Computer\KEYS01.ICO
MaximizeBoxFalse
Size280;280
Text Калькулятор 1.0

Запускаем приложение. Возникает ошибка — "D:\Code\Glava1\Calculator\Form1.cs(75): The type or namespace name 'Form1' could not be found (are you missing a using directive or an assembly reference?)"

Мы изменили свойство Name, а в коде метода Main, сгенерированном Мастером, осталось старое имя формы. Исправляем на новое:

[STAThread] static void Main() { Application.Run(new Calc()); }

Теперь все работает. Вернемся в режим дизайна и расположим на форме кнопки калькулятора и TextBox, который будет играть роль дисплея (рис. 1.43):


Рис. 1.43.  Расположение элементов управления в режиме дизайна

Для кнопок устанавливаем следующие свойства:

ЭлементNameText
button1btn11
button2btn22
button3btn33
button4btn44
button5btn55
button6btn66
button7btn77
button8btn88
button9btn99
button10btn100
button11btnChangesign+/–
button12btnpoint,
button13btn_plus+
button14btn_minus
button15btn_umnojenie*
button16btn_delenie/
button17btn_sbrosC
button18btn_ravno=

Установим свойство Size одной кнопки 40;40, а затем, выделив все остальные кнопки, сделаем их одинакового размера — пункт меню Format/Make Same Size/Both. Затем высоту кнопок btn_sbros и btn_ravno сделаем сдвоенной, как показано на рис. рис. 1.43.

Для текстового поля устанавливаем следующие свойства:

textBox1, свойствоЗначение
NametxtOutput
Font/Size12
Size250; 26
Location10;24
TextAlignRight

Дизайн нашего приложения готов. Теперь можно приступать к коду. Состоять он будет из двух классов — public class Calc : System.Windows.Forms.Form —основного, в котором будет реализовываться вся обработка нажатия клавиш, и class mehanizmcalkulyatora, в котором будет находиться вся логика его работы (рис. 1.44):


Рис. 1.44.  Для просмотра структуры кода удобно сворачивать классы, щелкая на знаке (+)

Далее привожу листинг класса mehanizmcalkulyatora с комментариями:


Листинг 1.8.

(html, txt)

Механизм калькулятора готов. Для создания обработчиков кнопок в режиме дизайна дважды щелкаем по каждой кнопке, для быстрого возврата к режиму дизайна используем сочетания клавиш Shift+F7. Теперь в классе public class Calc : System.Windows.Forms.Form добавляем код для работы интерфейса приложения1):

Листинг 1.9.

(html, txt)

Приложение готово (рис. 1.45).


Рис. 1.45.  Приложение Calculator

На диске, прилагаемом к книге, вы найдете приложение Calculator (Code\Glava1\ Calculator).

Перемещение по коду, окна Types и Members

При просмотре даже не очень большого листинга, такого как рассмотренный выше, пользоваться полосой прокрутки не слишком удобно. Среда Visual Studio .NET предоставляет окна Types и Members для просмотра типа объектов и их содержимого. При выборе данного объекта в окне Types мы перемещаемся в коде к началу этого объекта (рис. 1.46) , а в окне Members приводятся члены этого объекта (рис. 1.47):


Рис. 1.46.  Окно Types. Перечисление Deystvie


Рис. 1.47.  Окно Members. Перечисление Deystvie

Если объект состоит из большого количества членов, удобнее выбирать в окне Members нужный член и перемещаться к его коду в листинге. Окна Types и Members, наряду с окном Class View, используются также для анализа листинга.

on_load_lecture()

Дальше »



  Если Вы заметили ошибку - сообщите нам.  
Страницы:

« |

1

|

2

|

3

|

4

|

5

|

6

|

7

|

8

|

9

|

10

|

вопросы | »

|

учебники

|

для печати и PDA

Курсы | Учебные программы | Учебники | Новости | Форум | Помощь


Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru

© 2003-2007, INTUIT.ru::Интернет-Университет Информационных Технологий - дистанционное образование



public static void DeystvieCalculatora (Deystvie peremenDeystviya) { try { if (resultatOutput != "" && !dobavlenierazryada) { pervoeChislo = System.Convert.ToDouble (resultatOutput); tekusheeDeystvieCalculatora = peremenDeystviya; resultatOutput = ""; ChislosTochkoy = false; } }

catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally {

} }

/// <summary> /// При нажатии кнопки +/– число на экране — tekusheeChislo умножается на –1, /// а затем результат снова присваивается переменной resultatOutput /// </summary>

public static string ZnakChisla () { double tekusheeChislo;

if (resultatOutput != "") { tekusheeChislo = System.Convert.ToDouble (resultatOutput); resultatOutput = System.Convert.ToString(tekusheeChislo * peremennayaMinus); }

return (resultatOutput); }

/// <summary> /// При нажатии кнопки ( , ) переменная resultatOutput приобретает дробную часть /// </summary>

public static string ZnakTochki () { if (!ChislosTochkoy && !dobavlenierazryada) { if (resultatOutput != "") resultatOutput = resultatOutput + ","; else resultatOutput = "0,";

ChislosTochkoy = true; }

return (resultatOutput); }

/// <summary> /// При нажатии кнопки ZnakRavno обрабатываются значения /// переменнных pervoeChislo и vtoroeChislo, результат присваивается переменной ///resultatVichisleniy, /// которая затем преобразуется в resultatOutput /// </summary>

public static string ZnakRavno () { bool proverkaOshibok = false;

if (resultatOutput != "") { vtoroeChislo = System.Convert.ToDouble (resultatOutput); dobavlenierazryada = true;

switch (tekusheeDeystvieCalculatora) { case Deystvie.NeopredelDeystvie: proverkaOshibok = false; break;

case Deystvie.Slojenie: resultatVichisleniy = pervoeChislo + vtoroeChislo; proverkaOshibok = true; break;

case Deystvie.Vichitanie: resultatVichisleniy = pervoeChislo – vtoroeChislo; proverkaOshibok = true; break;



case Deystvie.Umnojenie: resultatVichisleniy = pervoeChislo * vtoroeChislo; proverkaOshibok = true; break;

case Deystvie.Delenie: resultatVichisleniy = pervoeChislo / vtoroeChislo; proverkaOshibok = true; break;

default: proverkaOshibok = false; break; }

if (proverkaOshibok) resultatOutput = System.Convert.ToString (resultatVichisleniy); }

return (resultatOutput); }

/// <summary> /// При нажатии кнопки С (сброс) значения переменных обнуляются /// </summary>

public static void Sbros () { resultatVichisleniy = 0; pervoeChislo = 0; vtoroeChislo = 0; resultatOutput = ""; tekusheeDeystvieCalculatora = Deystvie.NeopredelDeystvie; ChislosTochkoy = false; dobavlenierazryada = false; } }

Листинг 1.8.

Механизм калькулятора готов. Для создания обработчиков кнопок в режиме дизайна дважды щелкаем по каждой кнопке, для быстрого возврата к режиму дизайна используем сочетания клавиш Shift+F7. Теперь в классе public class Calc : System.Windows.Forms.Form добавляем код для работы интерфейса приложения3):

public class Calc : System.Windows.Forms.Form { private System.Windows.Forms.TextBox txtOutput; private System.Windows.Forms.Button btn_sbros; private System.Windows.Forms.Button btnChangesign; private System.Windows.Forms.Button btnpoint; private System.Windows.Forms.Button btn_ravno; private System.Windows.Forms.Button btn_delenie; private System.Windows.Forms.Button btn_umnojenie; private System.Windows.Forms.Button btn_plus; private System.Windows.Forms.Button btn_minus; private System.Windows.Forms.Button btn0; private System.Windows.Forms.Button btn9; private System.Windows.Forms.Button btn8; private System.Windows.Forms.Button btn7; private System.Windows.Forms.Button btn6; private System.Windows.Forms.Button btn5; private System.Windows.Forms.Button btn4; private System.Windows.Forms.Button btn3; private System.Windows.Forms.Button btn2; private System.Windows.Forms.Button btn1; private System.ComponentModel.Container components = null; /// <summary> /// Объявляем и инициализируем переменные, которые будут /// возникать на экране при нажатии соответствующих кнопок /// </summary> private const string odin = "1"; private const string dva = "2"; private const string tri = "3"; private const string chetire = "4"; private const string pyat = "5"; private const string shest = "6"; private const string sem = "7"; private const string vosem = "8"; private const string devyat = "9"; private const string nul = "0";



public Calc() { InitializeComponent(); // При запуске приложения на экране будет нуль txtOutput.Text = "0";

}

protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); }

Windows Form Designer generated code

[STAThread] static void Main() { Application.Run(new Calc()); } /// <summary> /// Обработчики для кнопок обращаются к методу chislonaEkrane класса ///mehanizmcalkulyatora /// и передают ему одну из постоянных (odin, dva, tri и т.д.). Результат, ///возвращаемый методом, /// присваивается свойству Text текстового поля txtOutput /// </summary>

private void btn1_Click(object sender, System.EventArgs e) { txtOutput.Text = mehanizmcalkulyatora.chislonaEkrane (odin); }

private void btn2_Click(object sender, System.EventArgs e) { txtOutput.Text = mehanizmcalkulyatora.chislonaEkrane (dva); }

private void btn3_Click(object sender, System.EventArgs e) { txtOutput.Text = mehanizmcalkulyatora.chislonaEkrane (tri); }

private void btn4_Click(object sender, System.EventArgs e) { txtOutput.Text = mehanizmcalkulyatora.chislonaEkrane (chetire); }

private void btn5_Click(object sender, System.EventArgs e) { txtOutput.Text = mehanizmcalkulyatora.chislonaEkrane (pyat); }

private void btn6_Click(object sender, System.EventArgs e) { txtOutput.Text = mehanizmcalkulyatora.chislonaEkrane (shest); }

private void btn7_Click(object sender, System.EventArgs e) { txtOutput.Text = mehanizmcalkulyatora.chislonaEkrane (sem); }

private void btn8_Click(object sender, System.EventArgs e) { txtOutput.Text = mehanizmcalkulyatora.chislonaEkrane (vosem); }

private void btn9_Click(object sender, System.EventArgs e) { txtOutput.Text = mehanizmcalkulyatora.chislonaEkrane (devyat); }

private void btn0_Click(object sender, System.EventArgs e) { txtOutput.Text = mehanizmcalkulyatora.chislonaEkrane (nul); }

private void btnChangesign_Click(object sender, System.EventArgs e) { txtOutput.Text = mehanizmcalkulyatora.ZnakChisla(); }



private void btnpoint_Click(object sender, System.EventArgs e) { txtOutput.Text = mehanizmcalkulyatora.ZnakTochki(); } /// <summary> /// Обработчики кнопок действия калькулятора передают /// методу DeystvieCalculatora класса mehanizmcalkulyatora ///переменную перечисления Deystvie /// </summary>

private void btn_delenie_Click(object sender, System.EventArgs e) { mehanizmcalkulyatora.DeystvieCalculatora (mehanizmcalkulyatora.Deystvie.Delenie); }

private void btn_umnojenie_Click(object sender, System.EventArgs e) { mehanizmcalkulyatora.DeystvieCalculatora (mehanizmcalkulyatora.Deystvie.Umnojenie); }

private void btn_minus_Click(object sender, System.EventArgs e) { mehanizmcalkulyatora.DeystvieCalculatora (mehanizmcalkulyatora.Deystvie.Vichitanie); }

private void btn_plus_Click(object sender, System.EventArgs e) { mehanizmcalkulyatora.DeystvieCalculatora (mehanizmcalkulyatora.Deystvie.Slojenie); }

private void btn_ravno_Click(object sender, System.EventArgs e) { txtOutput.Text = mehanizmcalkulyatora.ZnakRavno(); mehanizmcalkulyatora.Sbros(); }

private void btn_sbros_Click(object sender, System.EventArgs e) { mehanizmcalkulyatora.Sbros(); txtOutput.Text = "0"; } }

Листинг 1.9.

Приложение готово (рис. 1.45).


Рис. 1.45.  Приложение Calculator

На диске, прилагаемом к книге, вы найдете приложение Calculator (Code\Glava1\ Calculator).

Перемещение по коду, окна Types и Members

При просмотре даже не очень большого листинга, такого как рассмотренный выше, пользоваться полосой прокрутки не слишком удобно. Среда Visual Studio .NET предоставляет окна Types и Members для просмотра типа объектов и их содержимого. При выборе данного объекта в окне Types мы перемещаемся в коде к началу этого объекта (рис. 1.46) , а в окне Members приводятся члены этого объекта (рис. 1.47):


Рис. 1.46.  Окно Types. Перечисление Deystvie


Рис. 1.47.  Окно Members. Перечисление Deystvie

Если объект состоит из большого количества членов, удобнее выбирать в окне Members нужный член и перемещаться к его коду в листинге. Окна Types и Members, наряду с окном Class View, используются также для анализа листинга.


Содержание раздела