Как в windows forms добавить кнопку

Последнее обновление: 31.10.2015

Элементы управления

Последнее обновление: 31.10.2015

Элементы управления представляют собой визуальные классы, которые получают введенные пользователем данные и могут инициировать различные события.
Все элементы управления наследуются от класса Control и поэтому имеют ряд общих свойств:

  • Anchor: Определяет, как элемент будет растягиваться

  • BackColor: Определяет фоновый цвет элемента

  • BackgroundImage: Определяет фоновое изображение элемента

  • ContextMenu: Контекстное меню, которое открывается при нажатии на элемент правой кнопкой мыши.
    Задается с помощью элемента ContextMenu

  • Cursor: Представляет, как будет отображаться курсор мыши при наведении на элемент

  • Dock: Задает расположение элемента на форме

  • Enabled: Определяет, будет ли доступен элемент для использования. Если это свойство имеет значение False,
    то элемент блокируется.

  • Font: Устанавливает шрифт текста для элемента

  • ForeColor: Определяет цвет шрифта

  • Location: Определяет координаты верхнего левого угла элемента управления

  • Name: Имя элемента управления

  • Size: Определяет размер элемента

  • Width: ширина элемента

  • Height: высота элемента

  • TabIndex: Определяет порядок обхода элемента по нажатию на клавишу Tab

  • Tag: Позволяет сохранять значение, ассоциированное с этим элементом управления

Кнопка

Наиболее часто используемым элементом управления является кнопка. Обрабатывая событие нажатия кнопки, мы может производить те или иные действия.

При нажатии на кнопку на форме в редакторе Visual Studio мы по умолчанию попадаем в код обработчика события Click,
который будет выполняться при нажатии:

private void button1_Click(object sender, EventArgs e)
{
    MessageBox.Show("Hello World");
}

Оформление кнопки

Чтобы управлять внешним отображением кнопки, можно использовать свойство FlatStyle. Оно может принимать следующие значения:

  • Flat — Кнопка имеет плоский вид

  • Popup — Кнопка приобретает объемный вид при наведении на нее указателя, в иных случаях она имеет плоский вид

  • Standard — Кнопка имеет объемный вид (используется по умолчанию)

  • System — Вид кнопки зависит от операционной системы

Изображение на кнопке

Как и для многих элементов управления, для кнопки можно задавать изображение с помощью свойства BackgroundImage.
Однако мы можем также управлять размещением текста и изображения на кнопки.
Для этого надо использовать свойство TextImageRelation. Оно приобретает следующие значения:

  • Overlay: текст накладывается на изображение

  • ImageAboveText: изображение располагается над текстом

  • TextAboveImage: текст располагается над изображением

  • ImageBeforeText: изображение располагается перед текстом

  • TextBeforeImage: текст располагается перед изображением

Например, установим для кнопки изображение. Для этого выберем кнопку и в окне Свойств нажмем на поле Image (не путать с BackgroundImage). Нам откроется диалоговое окно
установи изображения:

Установка изображения для кнопки

В этом окне выберем опцию Local Resource и нажмем на кнопку Import, после чего нам откроется диалоговое окно для выбора файла изображения.

После выбора изображения мы можем установить свойство ImageAlign, которое управляет позиционированием изображения на кнопке:

ImageAlign

Нам доступны 9 вариантов, с помощью которых мы можем прикрепить изображение к определенной стороне кнопки. Оставим здесь значение по умолчанию — MiddleCenter,
то есть позиционирование по центру.

Затем перейдем к свойству TextImageRelation и установим для него значение ImageBeforeText. В итоге мы получим кнопку,
где сразу после изображения идет надпись на кнопке:

Кнопка с изображением в Windows Forms

Клавиши быстрого доступа

При работе с формами при использовании клавиатуры очень удобно пользоваться клавишами быстрого доступа. При нажатии на клавиатуре комбинации
клавиш At+некоторый символ, будет вызываться определенная кнопка. Например, зададим для некоторой кнопки свойство Text равное &Аватар.
Первый знак — амперсанд — определяет ту букву, которая будет подчеркнута. В данном случае надпись будет выглядеть как
Аватар. И теперь чтобы вызвать событие Click, нам достаточно нажать на комбинацию клавиш Alt+А.

Кнопки по умолчанию

Форма, на которой размещаются все элементы управления, имеет свойства, позволяющие назначать кнопку по умолчанию и кнопку отмены.

Так, свойство формы AcceptButton позволяет назначать кнопку по умолчанию, которая будет срабатывать по нажатию на клавишу Enter.

Аналогично работает свойство формы CancelButton, которое назначает кнопку отмены. Назначив такую кнопку, мы можем вызвать ее нажатие,
нажав на клавишу Esc.

Improve Article

Save Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    A Button is an essential part of an application, or software, or webpage. It allows the user to interact with the application or software. For example, if a user wants to exit from the current application so, he/she click the exit button which closes the application. It can be used to perform many actions like to submit, upload, download, etc. according to the requirement of your program. It can be available with different shape, size, color, etc. and you can reuse them in different applications. In .NET Framework, Button class is used to represent windows button control and it is inherited from ButtonBase class. It is defined under System.Windows.Forms namespace. 
    In C# you can create a button on the windows form by using two different ways:
    1. Design-Time: It is the easiest method to create a button. Use the below steps: 
     

    • Step 1: Create a windows form as shown in the below image: 
      Visual Studio -> File -> New -> Project -> WindowsFormApp 
       

    • Step 2: Drag the Button control from the ToolBox and drop it on the windows form. You are allowed to place a Button control anywhere on the windows form according to your need. 
       

    • Step 3: After drag and drop you will go to the properties of the Button control to set the properties of the Button. 
       

    2. Run-Time: It is a little bit trickier than the above method. In this method, you can create your own Button using the Button class. 
     

    • Step 1: Create a button using the Button() constructor is provided by the Button class.
       
    // Creating Button using Button class
    Button MyButton = new Button();
    • Step 2: After creating Button, set the properties of the Button provided by the Button class. 
       
    // Set the location of the button
    Mybutton.Location = new Point(225, 198);
    
    // Set text inside the button
    Mybutton.Text = "Submit";
    
    // Set the AutoSize property of the button
     Mybutton.AutoSize = true;
    
    // Set the background color of the button
    Mybutton.BackColor = Color.LightBlue;
    
    // Set the padding of the button
    Mybutton.Padding = new Padding(6);
    
    // Set font of the text present in the button
    Mybutton.Font = new Font("French Script MT", 18);
    • Step 3: And last add this button control to form using Add() method. 
       
    // Add this Button to form
    this.Controls.Add(Mybutton);
    • Example:
       

    CSharp

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

    namespace WindowsFormsApp8 {

    public partial class Form1 : Form {

        public Form1()

        {

            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)

        {

            Label l = new Label();

            l.AutoSize = true;

            l.Text = "Do you want to submit this project?";

            l.Location = new Point(222, 145);

            l.Font = new Font("French Script MT", 18);

            this.Controls.Add(l);

            Button Mybutton = new Button();

            Mybutton.Location = new Point(225, 198);

            Mybutton.Text = "Submit";

            Mybutton.AutoSize = true;

            Mybutton.BackColor = Color.LightBlue;

            Mybutton.Padding = new Padding(6);

            Mybutton.Font = new Font("French Script MT", 18);

            this.Controls.Add(Mybutton);

            Button Mybutton1 = new Button();

            Mybutton1.Location = new Point(360, 198);

            Mybutton1.Text = "Cancel";

            Mybutton1.AutoSize = true;

            Mybutton1.BackColor = Color.LightPink;

            Mybutton1.Padding = new Padding(6);

            Mybutton1.Font = new Font("French Script MT", 18);

            this.Controls.Add(Mybutton1);

        }

    }

    }

    • Output: 
       

    Important Properties of Button

    Property Description
    BackColor Using BackColor property you can set the background color of the button.
    BackgroundImage Using BackgroundImage property you can set the background image on the button.
    AutoEllipsis Using AutoEllipsis property you can set a value which shows that whether the ellipsis character (…) appears at the right edge of the control which denotes that the button text extends beyond the specified length of the button.
    AutoSize Using AutoSize property you can set a value which shows whether the button resizes based on its contents.
    Enabled Using Enabled property you can set a value which shows whether the button can respond to user interaction.
    Events Using Events property you can get the list of the event handlers that are applied on the given button.
    Font Using Font property you can set the font of the button.
    FontHeight Using FontHeight property you can set the height of the font.
    ForeColor Using ForeColor property you can set the foreground color of the button.
    Height Using Height property you can set the height of the button.
    Image Using Image property you can set the image on the button.
    Margin Using Margin property you can set the margin between controls.
    Name Using Name property you can set the name of the button.
    Padding Using Padding property you can set the padding within the button.
    Visible Using Visible property you can set a value which shows whether the button and all its child buttons are displayed.

    Important Events on Button

    Event Description
    Click This event occur when the button is clicked.
    DoubleClick This event occur when the user performs double click on the button.
    Enter This event occur when the control is entered.
    KeyPress This event occur when the character, or space, or backspace key is pressed while the control has focus.
    Leave This event occur when the input focus leaves the control.
    MouseClick This event occur when you click the mouse pointer on the button.
    MouseDoubleClick This event occur when you double click the mouse pointer on the button.
    MouseHover This event occur when the mouse pointer placed on the button.
    MouseLeave This event occur when the mouse pointer leaves the button.

    Improve Article

    Save Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    A Button is an essential part of an application, or software, or webpage. It allows the user to interact with the application or software. For example, if a user wants to exit from the current application so, he/she click the exit button which closes the application. It can be used to perform many actions like to submit, upload, download, etc. according to the requirement of your program. It can be available with different shape, size, color, etc. and you can reuse them in different applications. In .NET Framework, Button class is used to represent windows button control and it is inherited from ButtonBase class. It is defined under System.Windows.Forms namespace. 
    In C# you can create a button on the windows form by using two different ways:
    1. Design-Time: It is the easiest method to create a button. Use the below steps: 
     

    • Step 1: Create a windows form as shown in the below image: 
      Visual Studio -> File -> New -> Project -> WindowsFormApp 
       

    • Step 2: Drag the Button control from the ToolBox and drop it on the windows form. You are allowed to place a Button control anywhere on the windows form according to your need. 
       

    • Step 3: After drag and drop you will go to the properties of the Button control to set the properties of the Button. 
       

    2. Run-Time: It is a little bit trickier than the above method. In this method, you can create your own Button using the Button class. 
     

    • Step 1: Create a button using the Button() constructor is provided by the Button class.
       
    // Creating Button using Button class
    Button MyButton = new Button();
    • Step 2: After creating Button, set the properties of the Button provided by the Button class. 
       
    // Set the location of the button
    Mybutton.Location = new Point(225, 198);
    
    // Set text inside the button
    Mybutton.Text = "Submit";
    
    // Set the AutoSize property of the button
     Mybutton.AutoSize = true;
    
    // Set the background color of the button
    Mybutton.BackColor = Color.LightBlue;
    
    // Set the padding of the button
    Mybutton.Padding = new Padding(6);
    
    // Set font of the text present in the button
    Mybutton.Font = new Font("French Script MT", 18);
    • Step 3: And last add this button control to form using Add() method. 
       
    // Add this Button to form
    this.Controls.Add(Mybutton);
    • Example:
       

    CSharp

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

    namespace WindowsFormsApp8 {

    public partial class Form1 : Form {

        public Form1()

        {

            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)

        {

            Label l = new Label();

            l.AutoSize = true;

            l.Text = "Do you want to submit this project?";

            l.Location = new Point(222, 145);

            l.Font = new Font("French Script MT", 18);

            this.Controls.Add(l);

            Button Mybutton = new Button();

            Mybutton.Location = new Point(225, 198);

            Mybutton.Text = "Submit";

            Mybutton.AutoSize = true;

            Mybutton.BackColor = Color.LightBlue;

            Mybutton.Padding = new Padding(6);

            Mybutton.Font = new Font("French Script MT", 18);

            this.Controls.Add(Mybutton);

            Button Mybutton1 = new Button();

            Mybutton1.Location = new Point(360, 198);

            Mybutton1.Text = "Cancel";

            Mybutton1.AutoSize = true;

            Mybutton1.BackColor = Color.LightPink;

            Mybutton1.Padding = new Padding(6);

            Mybutton1.Font = new Font("French Script MT", 18);

            this.Controls.Add(Mybutton1);

        }

    }

    }

    • Output: 
       

    Important Properties of Button

    Property Description
    BackColor Using BackColor property you can set the background color of the button.
    BackgroundImage Using BackgroundImage property you can set the background image on the button.
    AutoEllipsis Using AutoEllipsis property you can set a value which shows that whether the ellipsis character (…) appears at the right edge of the control which denotes that the button text extends beyond the specified length of the button.
    AutoSize Using AutoSize property you can set a value which shows whether the button resizes based on its contents.
    Enabled Using Enabled property you can set a value which shows whether the button can respond to user interaction.
    Events Using Events property you can get the list of the event handlers that are applied on the given button.
    Font Using Font property you can set the font of the button.
    FontHeight Using FontHeight property you can set the height of the font.
    ForeColor Using ForeColor property you can set the foreground color of the button.
    Height Using Height property you can set the height of the button.
    Image Using Image property you can set the image on the button.
    Margin Using Margin property you can set the margin between controls.
    Name Using Name property you can set the name of the button.
    Padding Using Padding property you can set the padding within the button.
    Visible Using Visible property you can set a value which shows whether the button and all its child buttons are displayed.

    Important Events on Button

    Event Description
    Click This event occur when the button is clicked.
    DoubleClick This event occur when the user performs double click on the button.
    Enter This event occur when the control is entered.
    KeyPress This event occur when the character, or space, or backspace key is pressed while the control has focus.
    Leave This event occur when the input focus leaves the control.
    MouseClick This event occur when you click the mouse pointer on the button.
    MouseDoubleClick This event occur when you double click the mouse pointer on the button.
    MouseHover This event occur when the mouse pointer placed on the button.
    MouseLeave This event occur when the mouse pointer leaves the button.

    C# Button class in .NET Framework class library represents a Windows Forms Button control. A Button control is a child control placed on a Form and used to process click event and can be clicked by a mouse click or by pressing ENTER or ESC keys.

    If AutoEllipsis property is true, it adds ellipsis character to a control if text in control does not fit. You may have to set AutoSize to false to see the ellipses character.

    Image in Button

    The Image property of a Button control is used to set a button background as an image. The Image property needs an Image object. The Image class has a static method called FromFile that takes an image file name with full path and creates an Image object.

    You can also align image and text. The ImageAlign and TextAlign properties of Button are used for this purpose.

    The following code snippet sets an image as a button background.

    1.   
    2. dynamicButton.Image = Image.FromFile(@«C:ImagesDock.jpg»);  
    3.   
    4. dynamicButton.ImageAlign = ContentAlignment.MiddleRight;  
    5. dynamicButton.TextAlign = ContentAlignment.MiddleLeft;  
    6.   
    7. dynamicButton.FlatStyle = FlatStyle.Flat;  

    Text and Font

    The Text property of Button represents the contents of a Button. The TextAlign property if used to align text within a Button that is of type ContentAlignment enumeration.

    The Font property is used to set font of a Button.

    The following code snippet sets Text and Font properties of a Button control.

    1. dynamicButton.Text = «I am Dynamic Button»;  
    2. dynamicButton.TextAlign = ContentAlignment.MiddleLeft;  
    3. dynamicButton.Font = new Font(«Georgia», 16);  

    Button Control States

    Button control has five states — Normal, Flat, Inactive, Pushed, and All. ButtonState enumeration represents a button state.

    Unfortunately, Windows Forms does not have a straight-forward way to set a button control state but there is a work around.

    Windows Forms has a ControlPaint class with some static methods that can be used to draw various controls at runtime. The DrawButton method is used to draw a Button control and the last parameter of this method is ButtonState enumeration.

    The following code snippet sets the button state of button1 using ControlPaint class.

    1. ControlPaint.DrawButton(System.Drawing.Graphics.FromHwnd(button1.Handle), 0, 0, button1.Width, button1.Height, ButtonState.Pushed);  

    Adding Button Click Event Hander

    A Button control is used to process the button click event. We can attach a button click event handler at run-time by setting its Click event to an EventHandler obect. The EventHandler takes a parameter of an event handler. The Click event is attached in the following code snippet.

    1.   
    2. dynamicButton.Click += new EventHandler(DynamicButton_Click);  

    The signature of Button click event handler is listed in the following code snippet.

    1. private void DynamicButton_Click(object sender, EventArgs e)  
    2. { }  

    Creating a C# Button Dynamically

    Creating a Button control at run-time is merely a work of creating an instance of Button class, set its properties and add Button class to the Form controls.

    First step to create a dynamic button is to create an instance of Button class. The following code snippet creates a Button control object.

    1.   
    2. Button dynamicButton = new Button();  

    Next step, you need to set Button class properties. You need to make sure to specify the Location, Width, Height or Size properties. The default location of Button is left top corner of the Form. The Location property takes a Point that specifies the starting position of the Button on a Form. The Size property specifies the size of the control. We can also use Width and Height property instead of Size property. The following code snippet sets Location, Width, and Height properties of a Button control.

    1.   
    2. dynamicButton.Location = new Point(20, 150);  
    3. dynamicButton.Height = 40;  
    4. dynamicButton.Width = 300;  

    In the next step, you may set more properties of the Button control.

    The following code snippet sets background color, foreground color, Text, Name, and Font properties of a Button.

    1.   
    2. dynamicButton.BackColor = Color.Red;  
    3. dynamicButton.ForeColor = Color.Blue;  
    4. dynamicButton.Text = «I am Dynamic Button»;  
    5. dynamicButton.Name = «DynamicButton»;  
    6. dynamicButton.Font = new Font(«Georgia», 16);  

    A Button control is used to process the button click event. We can attach a button click event handler at run-time by setting its Click event to an EventHandler obect. The EventHandler takes a parameter of an event handler. The Click event is attached in the following code snippet.

    1.   
    2. dynamicButton.Click += new EventHandler(DynamicButton_Click);  

    The signature of Button click event handler is listed in the following code snippet.

    1. private void DynamicButton_Click(object sender, EventArgs e)  
    2. { }  

    Now the last step is adding a Button control to the Form. The Form.Controls.Add method is used to add a control to a Form. The following code snippet adds a Button control to the current Form.

    1. Controls.Add(dynamicButton);  

    The complete code is listed in the following code, where CreateDynamicButton methods creates a Button control to a Form at run-time, attaches a click event handler of the button and adds Button control to the Form by calling Form.Controls.Add() method.

    1.   
    2.   
    3.   
    4.   
    5. private void CreateDynamicButton()  
    6. {  
    7.   
    8.   
    9.    Button dynamicButton = new Button();  
    10.   
    11.   
    12.    dynamicButton.Height = 40;  
    13.    dynamicButton.Width = 300;  
    14.    dynamicButton.BackColor = Color.Red;  
    15.    dynamicButton.ForeColor = Color.Blue;  
    16.    dynamicButton.Location = new Point(20, 150);  
    17.    dynamicButton.Text = «I am Dynamic Button»;  
    18.    dynamicButton.Name = «DynamicButton»;  
    19.    dynamicButton.Font = new Font(«Georgia», 16);  
    20.   
    21.   
    22.    dynamicButton.Click += new EventHandler(DynamicButton_Click);  
    23.   
    24.   
    25.   
    26.    Controls.Add(dynamicButton);  
    27. }  
    28.   
    29.   
    30.   
    31.   
    32.   
    33.   
    34.   
    35. private void DynamicButton_Click(object sender, EventArgs e)  
    36. {  
    37.    MessageBox.Show(«Dynamic button is clicked»);  
    38. }  

    You need to make sure to call CreateDynamicButton() method on the Form’s constructor just after InitializeComponent() method, listed as following.

    1. public Form1()  
    2. {  
    3.    InitializeComponent();  
    4.    CreateDynamicButton();  
    5. }  

    Summary

    In this article, we discussed how to create Button control in Windows Forms using C# at design-time as well as at run-time. We also saw how to set a button properties and set the button click event handler.


    Кнопка (Button)

    Доброго времени суток! В этом уроке я коротко расскажу о таких элементах графического интерфейса, как кнопки. Кнопка (button), пожалуй самый распространенный элемент графического интерфейса. Так что, изучение элементов я начну именно с кнопок.

    В C#, кнопки представлены элементом графического интерфейса Button. На панели элементов, этот компонент (контрол) находится в  группе «Стандартные элементы управления» (или «Common Controls» в англоязычной версии Visual Studio), как показано на рисунке ниже.

    Кнопка в панели элементов Visual Studio

    Кнопка в панели элементов Visual Studio

    Можете создать новый (или открыть существующий) проект приложения с графическим интерфейсом в Visual Studio и перетащить на главную форму кнопку. Чтобы проверять на практике, что я сейчас буду рассказывать. А начну я с основных свойство кнопки.

    Основные свойства

    Name — задает уникальное имя для кнопки (специфическое свойство, необходимо, для работы с кнопкой из кода).

    Image — позволяет задать изображение для кнопки.

    ImageAlign — позволяет задать выравнивание изображению на кнопке.

    Enabled — разрешает или запрещает доступ к элементу, если указать значение true, то кнопка будет доступна для пользователя (он сможет нажимать на неё), значение false — наоборот, запрещает доступ.

    MaximumSize — позволяет задать размер кнопке. Работает аналогично свойство MaximumSize у формы.

    MinimumSize — позволяет задать размер кнопке. Работает аналогично свойство MinimumSize у формы.

    Size — позволяет задать размер кнопке. Работает аналогично свойство Size у формы.

    Text — позволяет задать надпись на кнопке.

    TextAlign — позволяет задать выравнивание текста, например, по центу, или в левом верхнем углу кнопки.

    Может иметь одно из значений, перечисленных в таблице ниже.

    Значение Краткое описание
    TopLeft Верхний левый угол
    TopCenter Сверху и по центру
    TopRight Правый верхний угол
    MiddleLeft Посередине слева
    MiddleCenter Посередине по центру
    MiddleRight Посередине справа
    BottomLeft Левый нижний угол
    BottomCenter Снизу по центру
    BottomRight Правый нижний угол

    Visible — позволят скрыть кнопку, если установлено в false. Для отображения кнопки снова, нужно установить этому свойству значение true.

    Основные события

    Click — возникает, при щелчке мышью на кнопке, либо при нажатии на клавишу Enter на клавиатуре.

    MouseClick — возникает, при щелчке мышью (в обработчик события, передается дополнительная информация).

    Основные методы

    Hide — скрывает кнопку (делает её невидимой).

    Show — показывает кнопку (делает её видимой).

    А вот вам пример окна с тремя кнопками:

    Пример окна с тремя кнопками

    Пример окна с тремя кнопками

    Перейти к следующему уроку

    Шаг 2) После того, как группа будет добавлена, перейдите в окно свойств, нажав на элемент управления группы. В окне свойств перейдите к свойству Text и измените его на «Сведения о пользователе».

    В выводе вы можете четко видеть, что Groupbox был добавлен в форму. Вы также можете видеть, что текст группового блока был изменен на «Сведения о пользователе».

    Затем идет Контроль надписей. Элемент управления меткой используется для отображения текста или сообщения пользователю в форме. Элемент управления меткой обычно используется вместе с другими элементами управления. Типичными примерами являются метка, добавляемая вместе с элементом управления textbox.

    Метка указывает пользователю на то, что ожидается заполнить в текстовом поле. Давайте посмотрим, как мы можем реализовать это на примере, показанном ниже. Мы добавим 2 метки, одна из которых будет называться «имя», а другая – «адрес». Они будут использоваться вместе с элементами управления текстовым полем, которые будут добавлены в следующем разделе.

    Шаг 1) Первый шаг – перетащить элемент управления меткой в ​​форму Windows из панели инструментов, как показано ниже. Убедитесь, что вы перетаскиваете элемент управления меткой 2 раза, чтобы иметь один для «имени», а другой для «адреса».

    Шаг 2) После добавления метки перейдите в окно свойств, щелкнув элемент управления меткой. В окне свойств перейдите к свойству Text каждого элемента управления label.

    Вывод:-

    Приложение C # для Windows Forms

    Вы можете видеть элементы управления надписью, добавленные в форму.

    Текстовое окно

    Текстовое поле используется для того, чтобы пользователь мог ввести текст в приложение форм. Давайте посмотрим, как мы можем реализовать это на примере, показанном ниже. Мы добавим в форму 2 текстовых поля, одно для Имени и другое для адреса, который будет введен для пользователя.

    Шаг 1) Первый шаг – перетащить элемент управления текстовым полем на форму Windows из панели инструментов, как показано ниже.

    Приложение C # для Windows Forms

    Шаг 2) После добавления текстовых полей перейдите в окно свойств, щелкнув элемент управления текстовым полем. В окне свойств перейдите к свойству Name и добавьте осмысленное имя в каждое текстовое поле. Например, назовите текстовое поле для пользователя как txtUser, а для адреса – txtAddress. Соглашение и стандарт именования должны быть сделаны для элементов управления, потому что становится легче добавить дополнительную функциональность к этим элементам управления, что мы увидим позже.

    Приложение C # для Windows Forms

    После внесения вышеуказанных изменений вы увидите следующий вывод

    Вывод:-

    Приложение C # для Windows Forms

    На выходе вы можете четко видеть, что текстовые поля были добавлены в форму.

    Список

    Список используется для отображения списка элементов в форме Windows. Давайте посмотрим, как мы можем реализовать это на примере, показанном ниже. Мы добавим в форму список для хранения некоторых городов.

    Шаг 1) Первый шаг – перетащить элемент управления со списком на форму Windows из панели инструментов, как показано ниже.

    Приложение C # для Windows Forms

    Шаг 2) После того, как список был добавлен, перейдите в окно свойств, нажав на элемент управления списка.

    Приложение C # для Windows Forms

    1. Сначала измените свойство элемента управления Listbox, в нашем случае мы изменили его на lstCity
    2. Нажмите на свойство Items. Это позволит вам добавлять различные элементы, которые могут отображаться в списке. В нашем случае мы выбрали элементы «коллекция».
    3. В появившемся всплывающем редакторе коллекции строк введите названия городов. В нашем случае мы ввели «Мумбаи», «Бангалор» и «Хайдарабад».
    4. Наконец, нажмите кнопку «ОК».

    После внесения вышеуказанных изменений вы увидите следующий вывод

    Вывод:-

    Приложение C # для Windows Forms

    В выводе вы видите, что список был добавлен в форму. Вы также можете видеть, что список заполнен значениями города.

    Переключатель

    Radiobutton используется для демонстрации списка элементов, из которых пользователь может выбрать один. Давайте посмотрим, как мы можем реализовать это на примере, показанном ниже. Мы добавим переключатель для мужской / женской опции.

    Шаг 1) Первый шаг – перетащить элемент управления radiobutton на форму Windows из панели инструментов, как показано ниже.

    Приложение C # для Windows Forms

    Шаг 2) После добавления радиокнопки перейдите в окно свойств, щелкнув элемент управления радиокнопки.

    Приложение C # для Windows Forms

    1. Во-первых, вам нужно изменить свойство текста обоих элементов управления Radio. Перейдите в окно свойств и измените текст на мужской радиобутон, а на другой женский.
    2. Аналогичным образом измените свойство name обоих элементов управления Radio. Перейдите в окно свойств и измените имя на «rdMale» одной радиокнопки и на «rdfemale» для другой.

    Как только вы сделаете вышеуказанные изменения, вы увидите следующий вывод

    Вывод:-

    Приложение C # для Windows Forms

    Вы увидите переключатели, добавленные в форму Windows.

    флажок

    Флажок используется для предоставления списка опций, в которых пользователь может выбрать несколько вариантов. Давайте посмотрим, как мы можем реализовать это на примере, показанном ниже. Мы добавим 2 флажка в наши формы Windows. Эти флажки предоставят пользователю возможность изучать C # или ASP.Net.

    Шаг 1) Первый шаг – перетащить элемент управления флажком на форму Windows из панели инструментов, как показано ниже.

    Приложение C # для Windows Forms

    Шаг 2) После того, как флажок был добавлен, перейдите в окно свойств, нажав на элемент управления флажок.

    Приложение C # для Windows Forms

    В окне свойств

    1. Во-первых, вам нужно изменить свойство текста обоих элементов управления флажка. Откройте окно свойств и измените текст на C # и ASP.Net.
    2. Аналогичным образом измените свойство name обоих элементов управления Radio. Откройте окно свойств и измените имя на chkC для одного флажка и на chkASP для другого.

    После внесения вышеуказанных изменений вы увидите следующий вывод

    Вывод:-

    Приложение C # для Windows Forms

    кнопка

    Кнопка используется, чтобы позволить пользователю нажать на кнопку, которая затем начнет обработку формы. Давайте посмотрим, как мы можем реализовать это на примере, показанном ниже. Мы добавим простую кнопку «Отправить», которая будет использоваться для отправки всей информации в форме.

    Шаг 1) Первый шаг – перетащить элемент управления кнопки на форму Windows из панели инструментов, как показано ниже.

    Приложение C # для Windows Forms

    Шаг 2) После добавления кнопки перейдите в окно свойств, нажав на элемент управления Button.

    Приложение C # для Windows Forms

    1. Во-первых, вам нужно изменить текстовое свойство кнопки управления. Откройте окно свойств и измените текст на «отправить».
    2. Аналогичным образом измените свойство name элемента управления. Откройте окно свойств и измените имя на «btnSubmit».

    После внесения вышеуказанных изменений вы увидите следующий вывод

    Вывод:-

    Приложение C # для Windows Forms

    Поздравляю, теперь у вас есть первая базовая форма Windows. Давайте теперь перейдем к следующей теме, чтобы увидеть, как мы можем выполнять обработку событий для элементов управления.

    C # Обработка событий для элементов управления

    При работе с формой окна вы можете добавлять события в элементы управления. Событие – это то, что происходит при выполнении действия. Вероятно, наиболее распространенным действием является нажатие кнопки на форме. В Windows Forms вы можете добавить код, который можно использовать для выполнения определенных действий при нажатии кнопки в форме.

    Обычно, когда кнопка нажимается на форме, это означает, что должна выполняться некоторая обработка.

    Давайте посмотрим на одно из событий и как оно может быть обработано, прежде чем мы перейдем к сценарию события кнопки.

    В приведенном ниже примере будет показано событие для элемента управления Listbox. Таким образом, всякий раз, когда элемент выбран в элементе управления списком, должно появиться окно сообщения, в котором отображается выбранный элемент. Давайте выполним следующие шаги для достижения этой цели.

    Шаг 1) Дважды щелкните по списку в конструкторе форм . Делая это, Visual Studio автоматически откроет файл кода для формы. И он автоматически добавит метод события в код. Этот метод события будет запускаться всякий раз, когда выбран какой-либо элемент в списке.

    Приложение C # для Windows Forms

    Выше приведен фрагмент кода, который автоматически добавляется Visual Studio при двойном щелчке элемента управления «Список» на форме. Теперь давайте добавим приведенный ниже фрагмент кода в этот фрагмент кода, чтобы добавить необходимые функции в событие списка.

    Приложение C # для Windows Forms

    1. Это метод обработчика событий, который автоматически создается Visual Studio при двойном щелчке элемента управления «Список». Вам не нужно беспокоиться о сложности имени метода или параметров, передаваемых в метод.
    2. Здесь мы получаем SelectedItem через свойство lstCity.SelectedItem. Помните, что lstCity – это имя нашего элемента управления Listbox. Затем мы используем метод GetItemText, чтобы получить фактическое значение выбранного элемента. Затем мы присваиваем это значение текстовой переменной.
    3. Наконец, мы используем метод MessageBox для отображения значения текстовой переменной для пользователя.

    Как только вы внесете вышеуказанные изменения и запустите программу в Visual Studio, вы увидите следующий вывод

    Вывод:-

    Приложение C # для Windows Forms

    Из вывода видно, что при выборе любого элемента из списка появляется окно сообщения. Это покажет выбранный элемент из списка.

    Теперь давайте посмотрим на последний элемент управления, который представляет собой метод нажатия кнопки. Опять же, это следует той же философии. Просто дважды щелкните кнопку в конструкторе форм, и он автоматически добавит метод для обработчика события кнопки. Тогда вам просто нужно добавить код ниже.

    Приложение C # для Windows Forms

    1. Это метод обработчика событий, который автоматически создается Visual Studio при двойном щелчке по кнопке управления. Вам не нужно беспокоиться о сложности имени метода или параметров, передаваемых в метод.
    2. Здесь мы получаем значения, введенные в текстовое поле имени и адреса. Значения могут быть взяты из свойства text текстового поля. Затем мы присваиваем значения двум переменным: name и address соответственно.
    3. Наконец, мы используем метод MessageBox для отображения значения имени и адреса для пользователя.

    Как только вы внесете вышеуказанные изменения и запустите программу в Visual Studio, вы увидите следующий вывод

    Вывод:-

    Приложение C # для Windows Forms

    1. Сначала введите значение в поле имени и адреса.
    2. Затем нажмите на кнопку Отправить

    После того, как вы нажмете кнопку «Отправить», появится окно сообщения, в котором будет правильно показано, что вы ввели в разделе сведений о пользователе.

    Управление Tree и PictureBox

    Есть еще 2 элемента управления, на которые мы можем обратить внимание: один – «Управление деревом», а другой – «Управление изображением». Давайте посмотрим на примеры того, как мы можем реализовать эти элементы управления

    Управление Деревом

    – Элемент управления деревом используется для перечисления элементов в дереве, как мода. Вероятно, лучший пример – это когда мы видим сам Windows Explorer. Структура папок в проводнике Windows похожа на древовидную структуру.

    Давайте посмотрим, как мы можем реализовать это на примере, показанном ниже.

    Шаг 1) Первый шаг – перетащить элемент управления Tree в форму Windows из панели инструментов, как показано ниже.

    Приложение C # для Windows Forms

    Шаг 2) Следующий шаг – начать добавлять узлы в коллекцию дерева, чтобы он мог соответственно появиться в дереве. Во-первых, давайте выполните следующие подэтапы, чтобы добавить корневой узел в коллекцию деревьев.

    Приложение C # для Windows Forms

    1. Перейдите к панели инструментов свойств для древовидного элемента управления. Нажмите на свойство узла. Это вызовет редактор TreeNode
    2. В редакторе TreeNode нажмите кнопку Add Root, чтобы добавить корневой узел в коллекцию дерева.
    3. Затем измените текст корневого узла, укажите текст в качестве корневого и нажмите кнопку «ОК». Это добавит корневой узел.

    Шаг 3) Следующий шаг – начать добавлять дочерние узлы в коллекцию деревьев. Давайте выполним следующие подэтапы, чтобы добавить дочерний корневой узел в коллекцию деревьев.

    Приложение C # для Windows Forms

    1. Сначала нажмите кнопку «Добавить дочерний элемент». Это позволит вам добавить дочерние узлы в коллекцию Tree.
    2. Для каждого дочернего узла измените свойство text. Продолжайте повторять предыдущий шаг и этот шаг и добавьте 2 дополнительных узла. В итоге у вас будет 3 узла, как показано выше, с текстом соответственно Label, Button и Checkbox.
    3. Нажмите на кнопку ОК

    После внесения вышеуказанных изменений вы увидите следующий вывод.

    Вывод:-

    Приложение C # для Windows Forms

    Вы сможете увидеть древовидное представление, добавленное к форме. Когда вы запускаете приложение формы Windows, вы можете развернуть корневой узел и увидеть дочерние узлы в списке.

    PictureBox Control

    Этот элемент управления используется для добавления изображений в Windows Forms. Давайте посмотрим, как мы можем реализовать это на примере, показанном ниже.

    Шаг 1) Первый шаг – перетащить элемент управления PictureBox в форму Windows из панели инструментов, как показано ниже.

    Приложение C # для Windows Forms

    Шаг 2) Следующий шаг – прикрепить изображение к элементу управления графическим блоком. Это можно сделать, выполнив следующие шаги.

    Приложение C # для Windows Forms

    1. Сначала нажмите на свойство Image для элемента управления PictureBox. Появится новое окно.
    2. В этом окне нажмите на кнопку «Импорт». Это будет использоваться для прикрепления изображения к элементу управления Picturebox.
    3. Появится диалоговое окно, в котором вы сможете выбрать изображение для прикрепления картинки
    4. Нажмите на кнопку ОК

    Как только вы сделаете вышеуказанные изменения, вы увидите следующий вывод

    Вывод:-

    Приложение C # для Windows Forms

    Из вывода видно, что изображение отображается в форме.

    Резюме

    • Приложение форм Windows – это приложение, которое запускается на рабочем столе компьютера. Visual Studio вместе с C # можно использовать для создания приложений Windows Forms.
    • Элементы управления могут быть добавлены в формы Windows с помощью панели инструментов в Visual Studio. Такие элементы управления, как метки, флажки, переключатели и т. Д., Можно добавить в форму с помощью панели инструментов.
    • Можно также использовать расширенные элементы управления, такие как элемент управления в виде дерева и элемент управления PictureBox.
    • Обработчики событий используются для ответа на события, сгенерированные из элементов управления. Наиболее распространенным является тот, который добавляется для события нажатия кнопки.

    Пример 1. Форма,
    кнопка, метка и диалоговое окно

    После инсталляции
    системы программирования Visual
    Studio
    2010
    , включаю­щей
    в себя Visual
    С#2010
    ,
    загрузочный модуль системы devenv.exe
    будет, скорее всего, расположен в папке:
    C:Program
    FiIesMicrosoft
    Visual
    Studio
    10.0
    Common7
    IDE.

    Целесообразно
    создать ярлык на рабочем столе для
    запуска Visual
    С#.
    После
    запуска увидим начальный пользовательский
    интерфейс, показанный на рис. 1.1.

    Рис. 1.1.
    Фрагмент стартовой страницы системы
    Visual
    Studio
    2010

    Чтобы запрограммировать
    какую-либо задачу, необходимо в пункте
    меню File
    выполнить команду New
    Project.
    В появившемся окне New
    Project
    в левой колонке находится список
    инсталлированных шаблонов (Installed
    Templates).
    Среди них—
    шаблоны языков программирования,
    встроенных в Visual
    Studio,
    в том числе: Visual
    Basic,
    Visual
    С#,
    Visual
    С++,
    Visual
    F#
    и др. Нам нужен язык Visual
    С#.
    В средней
    колонке выберем шаблон (Templates)
    Windows
    Forms
    Application
    C#
    и щелкнем на кнопке ОК.
    В результате увидим окно, представленное
    на рис. 1.2.

    В этом окне
    изображена экранная
    форма

    Form1,
    в которой программисты располагают
    различные компоненты графического
    интерфейса пользователя или, как их
    иначе называют, элементы управления.
    Это поля для ввода текста TextBox.
    командные кнопки Button,
    строчки текста в форме — метки Label,
    которые не могут быть отредактированы
    пользователем, и прочие элементы
    управления. Причем здесь используется
    самое современное так называемое
    визуальное
    программирование,
    предполагающее
    простое перетаскивание мышью из панели
    элементов Toolbox,
    где расположены всевозможные элементы
    управления, в форму. Таким образом,
    стараются свести к минимуму непосредственное
    написание программного кода.

    Ваша первая
    программа будет отображать такую
    экранную форму, в которой будет что-либо
    написано, например «Microsoft
    Visual
    С#2010
    «,
    также в форме будет расположена командная
    кнопка с надписью «Нажми меня». При
    нажатии кнопки появится диалоговое
    окно с сообщением «Всем привет!»

    Рис. 1.2.
    Окно для проектирования пользовательского
    интерфейса

    Написать такую
    программку — вопрос 2—3 минут. Но вначале
    я хотел бы бук­вально двумя словами
    объяснить современный объектно-ориентированный
    подход к программированию. Подход
    заключается в том, что в программе все,
    что может быть

    названо именем
    существительным, называют объектом.
    Так, в нашей
    про­грамме мы имеем четыре объекта:
    форму Form,
    надпись на форме Label,
    кнопку Button
    и диалоговое окно MessageBox
    с текстом «Всем привет!» (окно с
    приветом). Итак, добавьте метку и кнопку
    на форму примерно так, как показано на
    рис. 1.3.

    Рис. 1.3.
    Форма первого проекта

    Любой такой объект
    можно создавать самому, а можно
    пользоваться готовыми объектами. В
    данной задаче мы пользуемся готовыми
    визуальными объектами, ко­торые можно
    перетаскивать мышью из панели элементов
    управления Toolbox.
    В этой задаче нам нужно знать, что каждый
    объект имеет свойства (properties).
    На­пример, свойствами кнопки являются
    (рис. 1.4): имя кнопки (Name)—
    button1,
    надпись на кнопке (Text),
    расположение кнопки (Location)
    в системе координат формы х, у, размер
    кнопки size
    и т. д. Свойств много, их можно увидеть,
    если щелкнуть правой кнопкой мыши в
    пределах формы и выбрать в контекстном
    меню команду Properties;
    при этом появится панель свойств
    Properties
    (см. рис. 1.4).

    Указывая мышью на
    все другие элементы управления в форме,
    можно про­смотреть их свойства: формы
    Form1
    и надписи в форме — метки label1.

    Вернемся к нашей
    задаче. Для объекта label1
    выберем свойство Text
    и напи­шем напротив этого поля
    «Microsoft
    Visual
    С# 2010
    »
    (вместо текста label1).
    Для объекта button1
    также в свойстве Text
    напишем «Нажми меня».

    Кроме того, что
    объекты имеют свойства, следует знать,
    что объекты обраба­тываются событиями.
    Событием, например, является щелчок на
    кнопке, щелчок в пределах формы, загрузка
    (Load)
    формы в оперативную память при старте
    про­граммы и проч.

    Управляют тем или
    иным событием посредством написания
    процедуры обра­ботки события в
    программном коде. Для этого вначале
    нужно получить «пустой»
    обработчик события.
    В
    нашей задаче единственным событием,
    которым мы управляем, является щелчок
    на командной кнопке. Для получения
    пустого обра­ботчика этого события
    следует в свойствах кнопки button1
    (см. рис. 1.4) щелкнуть на значке молнии
    Events
    (События) и в списке всех возможных
    событий кнопки button1
    выбрать двойным щелчком событие
    Click.
    После этого мы попадем на вкладку
    программного кода Form1.cs
    (рис. 1.5).

    При этом управляющая
    среда Visual
    С# 2010

    сгенерировала тот самый пустой обработчик
    события button1_click:

    private
    void buttonl_Click(object sender, EventArgs e) { }

    Рис.
    1.4.
    Свойства кнопки button1

    в фигурных скобках
    которого мы можем написать команды,
    подлежащие выполне­нию после щелчка
    на кнопке. Вы видите, что у нас теперь
    две вкладки: Form1.cs
    и Form1.cs
    [
    Design],
    т. е. вкладка программного кода и вкладка
    визуального проекта программы (другое
    название этой вкладки — дизайнер
    формы).
    Переключаться
    между ними можно мышью или нажатием
    комбинации клавиш <Ctrl>+<Tab>,
    как это принято обычно между вкладками
    в Windows,
    а также функциональной клави­шей
    <F7>.

    Напомню, что после
    щелчка на кнопке должно появиться
    диалоговое окно, в котором написано:
    «Всем привет!» Поэтому в фигурных
    скобках обработчика со­бытия напишем:

    MessageBox.Show(«Всем
    привет! «) ;

    Здесь вызывается
    метод (программа) Show
    объекта MessageBox
    с текстом «Всем привет!» Таким
    образом, я здесь «нечаянно»
    проговорился о том, что объекты кро­ме
    свойств имеют также и методы,
    т. е. программы,
    которые обрабатывают объекты. Кстати,
    после каждого оператора в С-программах(Автор
    намеренно здесь указал «С», а не
    «С#», чтобы подчеркнуть особенность
    синтаксиса лю­бой
    Си-программы,
    будь то С++, или С#, или Turbo-C.
    ) ставят точку
    с запятой.
    Это
    вместе с фигурными скобками по форме
    отличает С-программу от программных
    кодов на других языках программирования.

    Рис 1.5.
    Вкладка программного кода

    Таким образом, мы
    написали процедуру
    обработки события
    щелчка
    (click)
    на кнопке button1.
    Теперь нажмем клавишу <F5>
    и проверим работоспособность про­граммы
    (рис. 1.6).

    Поздравляю, вы
    написали свою первую программу на Visual
    С#!

    Рис. 1.6.
    Работающая программа

    Пример 2. Событие
    MouseHover

    Немного усложним
    предыдущую задачу. Добавим еще одну
    обработку события MouseHover
    мыши для объекта label1.
    Событие MouseHover
    наступает тогда, когда пользователь
    указателем мыши «зависает» над
    каким-либо объектом, причем имен­но
    «зависает», а не просто перемещает
    мышь над объектом (от англ. hover
    реять, парить). Есть еще событие MouseEnter
    (Войти), когда указатель мыши входит
    в пределы
    области
    элемента управления (в данном случае
    метки label1).

    Чтобы добавить
    обработку события MouseHover
    мыши для объекта label1,
    сле­дует так же, как это мы делали при
    обработке события «щелчок на кнопке»,
    в пане­ли Properties
    щелкнуть на значке молнии (Events)
    и двойным щелчком выбрать для объекта
    label1
    событие MouseHover.
    При этом осуществится переход на вкладку
    программного кода Form1.cs
    и среда Visual
    Studio
    2010
    сгенерирует
    простой обработчик события:

    private
    void label1_MouseHover(object sender, EventArgs e) { }

    Между фигурными
    скобками вставим вызов диалогового
    окна:

    MessageBox.Show(«Событие
    Hover!»);

    Теперь проверим
    возможности программы: нажимаем клавишу
    <F5>,
    «зависа­ем» указателем мыши над
    label1,
    щелкаем на кнопке button1.
    Все работает!

    А теперь я буду
    немного противоречить сам себе. Я говорил
    про визуальную технику программирования,
    направленную на минимизацию написания
    программ­ного кода. А сейчас хочу
    сказать про наглядность,
    оперативность, технологич­ность
    работы
    программиста. Посмотрите на свойства
    каждого объекта в панели Properties.
    Вы видите, как много строчек. Если вы
    меняете какое-либо свойство, то оно
    будет выделено жирным шрифтом. Удобно!
    Но все-таки еще более удобно свойства
    объектов назначать
    (устанавливать)
    в программном
    коде.
    Почему?

    Каждый программист
    имеет в своем арсенале множество уже
    отлаженных фрагментов, которые он
    использует в своей очередной новой
    программе. Програм­мисту стоит лишь
    вспомнить, где он программировал ту
    или иную ситуацию. Про­грамма, которую
    написал программист, имеет свойство
    быстро забываться. Если вы посмотрите
    на строчки кода, которые писали три
    месяца назад, то будете ощу­щать, что
    многое забыли; если прошел год, то вы
    смотрите на написанную вами программу,
    как на чужую. Поэтому при написании
    программ на первое место вы­ходят
    понятность,
    ясность, очевидность
    написанного
    программного кода. Для этого каждая
    система программирования имеет какие-либо
    средства. Кроме того, сам программист
    придерживается некоторых правил,
    помогающих ему работать производительно
    и эффективно.

    Назначать свойства
    объектов в программном коде удобно или
    сразу после ини­циализации компонентов
    формы (после процедуры InitializeComponent),
    или при обработке события Form1_Load,
    т. е. события загрузки формы в оперативную
    па­мять при старте программы. Получим
    простой обработчик этого события. Для
    это­го, как и в предыдущих случаях,
    можно выбрать нужное событие в панели
    свойств объекта, а можно еще проще:
    дважды щелкнуть в пределах проектируемой
    формы на вкладке Form1.cs
    [
    Design].
    В любом случае получаем пустой обработчик
    собы­тия на вкладке программного
    кода. Заметим, что для формы таким
    умалчиваемым событием, для которого
    можно получить пустой обработчик двойным
    щелчком, является событие загрузки
    формы Form1_Load,
    для командной кнопки Button
    и метки Label
    таким событием является одиночный
    щелчок мышью на этих элемен­тах
    управления. То есть если дважды щелкнуть
    в дизайнере формы по кнопке, то получим
    пустой обработчик button1_Click
    в программном коде, аналогично — для
    метки Label.

    Итак, вернемся к
    событию загрузки формы, для него
    управляющая среда сгене­рировала
    пустой обработчик:

    private
    void Form1_Load(object sender, EventArgs e) { }

    Здесь в фигурных
    скобках обычно вставляют свойства
    различных объектов и даже часто пишут
    много строчек программного кода. Здесь
    мы назначим свойству Text
    объекта label1
    значение «Microsoft
    Visual
    С# 2010
    «:

    Label1.Text
    = «Microsoft Visual C# 2010»;

    Аналогично для
    объекта button1:

    Button1.Text
    = «Нажми меня!»;

    Совершенно
    необязательно писать каждую букву
    приведенных команд. Напри­мер, для
    первой строчки достаточно написать
    «lа»,
    уже это вызовет появление рас­крывающегося
    меню, где вы сможете выбрать нужные для
    данного контекста клю­чевые слова.
    Это очень мощное и полезное современное
    средство, называемое IntellSense,
    для редактирования программного кода!
    Если вы от Visual
    Studio
    2010
    перешли
    в другую систему программирования, в
    которой отсутствует подобный сервис,
    то будете ощущать сильный дискомфорт.

    Вы написали название
    объекта label1,
    поставили точку. Теперь вы видите
    рас­крывающееся меню, где можете
    выбрать либо нужное свойство объекта,
    либо ме­тод (т. е. подпрограмму). В
    данном случае выберите свойство Text.

    Как видите, не
    следует пугаться слишком длинных
    ключевых слов, длинных названий объектов,
    свойств, методов, имен переменных.
    Система подсказок совре­менных систем
    программирования значительно облегчает
    всю нетворческую рабо­ту. Вот почему
    в современных программах можно наблюдать
    такие длинные имена ключевых слов, имен
    переменных и проч. Я призываю вас,
    уважаемые читатели, также использовать
    в своих программах для названия
    переменных, объектов наи­более ясные,
    полные имена, причем можно на вашем
    родном русском языке. Пото­му что на
    первое место выходят ясность, прозрачность
    программирования, а гро­моздкость
    названий с лихвой компенсируется
    системой подсказок.

    Далее хотелось
    бы, чтобы слева вверху формы на синем
    фоне (в так называе­мой строке заголовка)
    была не надпись «Form1«,
    а что-либо осмысленное. Напри­мер,
    слово «Приветствие«.
    Для этого ниже присваиваем эту строку
    свойству Text
    формы. Поскольку мы изменяем свойство
    объекта Form1
    внутри подпрограммы об­работки
    события, связанного с формой, следует
    к форме обращаться через ссылку this:
    this.Text
    = «Приветствие» ИЛИ base.Text
    = «Приветствие».

    После написания
    последней строчки кода мы должны увидеть
    на экране про­граммный код, представленный
    в листинге 1.1.

    Листинг 1.1.
    Программирование событий

    using
    System;

    using
    System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using
    System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Windows.Forms;

    namespace
    WindowsFormsApplication1

    {

    public
    partial class Form1 : Form

    {

    public
    Form1()

    {

    InitializeComponent();

    }

    //
    Обработка
    события
    загрузки
    формы:

    private
    void Form1_Load(object sender, EventArgs e)

    {

    this.Text =
    «Приветствие»;

    label1.Text
    = «Microsoft Visual C# 2010»;

    button1.Text
    = «Нажми меня»;

    }

    // Обработка события
    щелчок на кнопке:

    private
    void button1_Click(object sender, EventArgs e)

    {

    MessageBox.Show(«Всем
    привет!»);

    }

    // Обработка события,
    когда указатель мыши «завис» над
    меткой:

    private
    void label1_MouseHover(object sender, EventArgs e)

    {

    MessageBox.Show(«Событие
    Hover! «) ;

    }

    }

    }

    Комментарии,
    поясняющие работу программы, в окне
    редактора кода будут выделены зеленым
    цветом, чтобы в тексте выразительно
    отделять его от прочих элементов
    программы. В С-подобных языках комментарий
    пишут после двух слэ­шей (//) или внутри
    пар /* */. Даже если вам кажется весь­ма
    очевидным то, что вы пишете в программном
    коде, напишите
    комментарий.
    Как
    показывает опыт, даже весьма очевидный
    замысел программиста забывается
    удивительно быстро. Человеческая память
    отметает все, что по оценкам организма
    считается ненужным. Кроме того, даже
    если текст программы вполне ясен, в
    нача­ле программы должны быть описаны
    ее назначение и способ использования,
    т. е. как бы «преамбула» программы.
    Далее в примерах мы будем следовать
    этому пра­вилу.

    На рис. 1.7 приведен
    фрагмент работы программы.

    Обычно в редакторах
    программного кода используется
    моноширинный шрифт, поскольку все
    символы такого шрифта имеют одинаковую
    ширину, в том числе точка и прописная
    русская буква «Ш». По умолчанию в
    редакторе программного кода С# 2010 задан
    шрифт Consolas.
    Однако если пользователь привык к шрифту
    Courier
    New,
    то его настройку можно изменить, выбрав
    меню Tools
    | Options | En­vironment | Fonts and Colors
    .

    Теперь
    закроем
    проект
    (File
    | Close Project
    ).
    Система
    предложит нам сохранить Проект, сохраним
    проект под именем Hover.
    Теперь программный код этой программы
    можно посмотреть, открыв решение
    Hover.sin
    в папке Horver.

    Рис. 1.7.
    Работа программы

    Пример 3. Ввод
    данных через текстовое поле
    TextBox
    c
    проверкой
    типа методом
    TryParse

    При работе с формой
    очень часто ввод данных организуют
    через элемент управления «текстовое
    поле» TextBox.
    Напишем типичную программу, которая
    вводит через текстовое поле число, при
    нажатии командной кнопки извлекает из
    него квадратный корень и выводит
    результат на метку Label.
    В случае ввода не числа сообщает
    пользователю об этом.

    Решая сформулированную
    задачу, запускаем Visual
    Studio,
    выбираем пункт ме­ню File
    |
    New
    |
    Project,
    затем — шаблон Windows
    Forms
    Application
    Visual
    C#
    и щелкаем на кнопке ОК.
    Далее из панели элементов управления
    Toolbox
    (если в данный момент вы не видите панель
    элементов, то ее можно добавить, например,
    с помощью комбинации клавиш <Ctrl>+<Alt>+<X>
    или меню View
    |
    Toolbox)
    в форму указателем мыши перетаскиваем
    текстовое поле TextBox,
    метку Label
    и ко­мандную кнопку Button.
    Таким образом, в форме будут находиться
    три элемента управления.

    Теперь перейдем
    на вкладку программного кода, для этого
    правой кнопкой мыши вызовем контекстное
    меню и выберем в нем пункт View
    Code.
    Здесь сразу после инициализации
    компонентов формы, т. е. после вызова
    процедуры InitializeComponent
    задаем свойствам формы (к форме обращаемся
    посредством ссылки
    this
    или base),
    кнопкам button1
    и текстового поля textBox1,
    метке label1
    следующие значения:

    this.Text
    = «Извлечение квадратного корня»;

    batton1.Text
    = «Извлечь корень»;

    textBox1.Clear();
    // Очистка текстового поля

    label1.Text
    = null; // или
    = string.Empty;

    Нажмем клавишу
    <F5>
    для выявления возможных опечаток, т. е.
    синтаксических ошибок и предварительного
    просмотра дизайна будущей программы.

    Далее программируем
    событие button1_Click—
    щелчок мышью на кнопке Извлечь
    корень
    .
    Создать пустой обработчик этого события
    удобно, дважды щелкнув мышью на этой
    кнопке. Между двумя появившимися
    строчками программиру­ем диагностику
    правильности вводимых данных,
    конвертирование строковой пе­ременной
    в переменную типа single
    и непосредственное извлечение корня
    листинг 1.2).

    Листинг 1.2.
    Извлечение корня с проверкой типа
    методом
    TryParse

    using
    System;

    using
    System.Collections.Generic;

    using
    System.ComponentModel;

    using
    System.Data;

    using
    System. Drawing;

    using System.Linq;

    using
    System.Text;

    using
    System.Windows.Forms;

    // программа вводит
    через текстовое поле число, при щелчке
    на командной кнопке

    //извлекает из
    него квадратный корень и выводит
    результат на метку label1.

    // В случае ввода
    не числа сообщает пользователю об этом,

    //
    выводя
    красным цветом предупреждение также
    на метку label1.

    namespace
    Корень

    {

    public
    partial class Form1 : Form

    {

    public
    Form1 ()

    { //
    Инициализация
    компонентов
    формы

    InitializeComponent();

    buttonl.Text
    = «Извлечь
    корень»;

    label1.Text
    = null; // или
    = string.Empty;

    this.Text = «Извлечение
    квадратного
    корня»;

    textBox1.Clear(); //
    очистка
    текстового
    поля

    textBox1.Tablndex
    =0; // установка фокуса в текстовом поле

    }

    private
    void button1_Click(object sender, EventArgs e)

    { // Обработка
    щелчка на кнопке «Извлечь корень»

    Single
    X; // — из этого числа будем извлекать
    корень

    //
    Преобразование
    из
    строковой
    переменной
    в
    Single:

    bool
    Число_ли
    = Single.TryParse(textBoxl.Text,
    System.Globalization.NumberStyles.Number,

    System.Globalization.NumberFormatlnfо.Currentlnfo,
    out
    X);
    // Второй параметр — это разрешенный
    стиль числа (Integer,
    // шестнадцатиричное число, экспоненциальный
    вид числа и проч.).

    // Третий параметр
    форматирует значения на основе текущего

    // языка и региональных
    параметров из

    // Панели управления
    -> Язык и региональные стандарты

    // число допустимого
    формата;

    // метод возвращает
    значение в переменную X

    if
    (Число_ли == false)

    { // Если пользователь
    ввел не число:

    Label1.Text
    = «Следует вводить числа»;

    Label1.ForeColor
    = Color.Red;
    // красный цвет текста на метке

    return; //
    выход из процедуры

    }

    Single
    Y
    = (Single)Math.Sqrt(X);
    // извлечение корня

    Label1.ForeColor
    = Color.Black;
    // черный цвет текста на метке

    Label1.Text
    = string.Format(«Корень
    из {0} равен {1:F5}»,
    X, Y);

    }

    }

    }

    Здесь при обработке
    события «щелчок мышью» на кнопке
    Извлечь
    корень

    проводится проверка, введено ли число
    в текстовом поле. Проверка осуществляет­ся
    с помощью функции TryParse.
    Первым параметром метода TryParse
    является анализируемое поле textBox1.Text.
    Второй параметр — это разрешаемый для
    пре­образования стиль числа, он может
    быть целого типа (integer),
    шестнадцатеричным (HexNumber),
    представленным в экспоненциальном виде
    и проч. Третий пара­метр указывает,
    на какой основе формируется допустимый
    формат, в нашем случае мы использовали
    currentinfо,
    т. е. на основе текущего языка и региональных
    па­раметров. По умолчанию при инсталляции
    руссифицированной версии Windows
    разделителем целой и дробной части
    числа является запятая. Однако эту
    установку можно изменить, если в Панели
    управления

    выбрать значок Язык и региональные
    стандарты, затем на вкладке Региональные
    параметры

    щелкнуть на кнопке На­стройка
    и на появившейся новой вкладке указать
    в качестве разделителя целой и дробной
    частей точку вместо запятой. В обоих
    случаях (и для запятой, и для точки) метод
    TryParse
    будет работать так, как указано на
    вкладке Региональные
    пара­метры
    .

    Четвертый параметр
    метода TryParse
    возвращает результат преобразования.
    Кроме того, функция TryParse
    возвращает булеву переменную true
    или false,
    ко­торая сообщает, успешно ли выполнено
    преобразование. Как видно из текста
    про­граммы, если пользователь ввел
    не число (например, введены буквы), то
    на метку label1
    выводится
    красным цветом текст «Следует вводить
    числа». Далее, посколь­ку ввод
    неправильный, организован выход из
    программы обработки события button1_Click
    с помощью оператора return.
    На рис. 1.8 показан фрагмент работы
    программы.

    Как видно из
    рисунка, функция TryParse
    не восприняла введенные символы «2,3»
    как число, поскольку автор специально
    для демонстрации данного примера указал
    на вкладке Региональные
    параметры

    точку в качестве разделителя целой
    и дробной
    частей.

    Если пользователь
    ввел все-таки число, то будет выполняться
    следующий опе­ратор извлечения
    квадратного корня Math.Sqrt(x).
    Математические функции Vis­ual
    Studio
    2010
    являются
    методами класса Math.
    Их можно увидеть, набрав Math
    и поставив
    точку (.).

    Рис 1.8. Фрагмент
    работы программы

    В выпадающем списке
    вы увидите множество математических
    функций: Abs.
    sin,
    cos,
    Min
    и т. д. и два свойства— две константы E
    = 2.71…
    (основание натуральных логарифмов) и
    PI
    = 3,14…
    (число диаметров, уложен­ных вдоль
    окружности). Функция Math.Sqrt
    (х)
    возвращает
    значение типа double
    (двойной точности с плавающей запятой),
    которое приводим
    с помощью
    неявного преобразования (single)
    к переменной одинарной точности.

    Последней строчкой
    обработки события button1_Click
    является формирование строки label1.Text
    с использованием метода string.Format.
    Использованный формат «Корень из {0}
    равен {i:F5}»
    означает: взять нулевой выводимый
    эле­мент, т. е. переменную х, и записать
    эту переменную вместо фигурных скобок;
    по­сле чего взять первый выводимый
    элемент, т. е. y,
    и записать
    его вместо вторых фигурных скобок в
    формате с фиксированной точкой и пятью
    десятичными знака­ми после запятой.

    Нажав клавишу
    <F5>,
    проверяем, как работает программа.

    Рис. 1.9. Извлечение
    квадратного корня

    Если появились
    ошибки, то работу программы следует
    проверить отладчи­ком— клавиши <F8>
    или <F11>.
    В этом случае управление останавливается
    на каждом операторе, и вы можете проверить
    значение каждой переменной, наводя
    указатель мыши на переменные. Можно
    выполнить программу до определенной
    программистом точки (точки
    останова),
    используя,
    например, клавишу <F9>
    или оператор stop,
    и в этой точке проверить значения
    необходимых переменных.

    Убедиться в
    работоспособности этой программы можно,
    открыв соответст­вующее решение в
    папке Корень

    Пример 4. Ввод
    пароля в текстовое поле и изменение
    шрифта

    Это очень маленькая
    программа для ввода пароля в текстовое
    поле, причем при вводе вместо вводимых
    символов некто, «находящийся за спиной
    пользователя» увидит только звездочки.
    Программа состоит из формы, текстового
    поля TextBox
    метки Label,
    куда для демонстрации возможностей мы
    будем копировать пароль (паспорт, т. е.
    секретные слова) и командной кнопки
    Button
    Покажи
    паспорт
    .

    Перемещаем в форму
    все названные элементы управления.
    Текст программы приведен в листинге
    1.3.

    Листинг 1.3. Ввод
    пароля

    // Программа для
    ввода пароля в текстовое поле, причем
    при вводе вместо

    // вводимых символов
    некто, «находящийся за спиной
    пользователя»,

    // увидит только
    звездочки

    using System;

    using
    System.Drawing;

    using
    System. Windows. Forms
    ;

    // Другие директивы
    using
    удалены, поскольку они не используются

    // в данной программе

    namespace Passport

    {

    public
    partialI class Form1 : Form

    {

    public
    Form1()

    {

    InitializeComponent();

    base.Text =
    «Введи
    пароль»;

    textBox1.Text
    = null; textBox1.Tablndex = 0;

    textBox1.
    PasswordChar = ‘ * ‘ ;

    textBox1.Font
    = new Font(«Courier New», 9.0F);

    // или
    textBox1.Font = new Font(FontFamily.GenericMonospace, 9.OF);

    Label1.Text
    = string.Empty;

    Label1.Font
    = new Font(«Courier New», 9.0F);

    Button1.Text
    = «Покажи
    паспорт»;

    }

    private
    void button1_Click(object sender, EventArgs e)

    { //
    Обработка
    события
    «щелчок
    на
    кнопке»

    Label1.Text
    = textBox1.Text;

    }

    }

    }

    Как видно из текста
    программы, сразу после инициализации
    компонентов формы, т е. после вызова
    процедуры InitializeComponent,
    очищаем текстовое поле и делаем его
    «защищенным от посторонних глаз»
    с помощью свойства textBox1.
    PasswordChar,
    каждый введенный пользователем символ
    маскируется символом звездочки (*).
    Да­лее мы хотели бы для большей
    выразительности и читабельности
    программы, чтобы вводимые звездочки и
    результирующий текст имели одинаковую
    длину. Все симво­лы шрифта Courier
    New
    имеют одинаковую ширину, поэтому его
    называют моноши­ринным шрифтом.
    Кстати, используя именно этот шрифт,
    удобно программировать таблицу благодаря
    одинаковой ширине букв этого шрифта.
    Еще одним широко ис­пользуемым
    моноширинным шрифтом является шрифт
    Consola.
    Задаем шрифт, ис­пользуя свойство
    Font
    обоих объектов: textBox1
    и label1.
    Число 9.0 означает раз­мер шрифта.
    Свойство текстового поля Tablndex
    = 0 обеспечивает передачу фокуса при
    старте программы именно в текстовое
    поле.

    Осталось обработать
    событие button1_Click—
    щелчок на кнопке. Здесь — банальное
    присваивание текста из поля тексту
    метки. Программа написана, нажи­маем
    клавишу <F5>.
    На рис. 1.10 приведен вариант работы данной
    программы.

    Рис 1.10. Вариант
    работы программы

    При необходимости
    используйте отладчик (клавиша <F11>
    или <F10>)
    для пошагового
    выполнения программы
    и
    выяснения всех промежуточных значений
    пе­ременных путем «зависания»
    указателя мыши над переменными.

    Убедиться в
    работоспособности программы можно,
    открыв решение Passport.sin
    в папке Passport.

    Пример 5. Управление
    стилем шрифта с помощью элемента
    управления
    CheckBox

    Кнопка CheckBox
    (Флажок)
    также находится на панели элементов
    управления Toolbox.
    Флажок может быть либо установлен
    (содержит «галочку»), либо сброшен
    (пустой). Напишем программу, которая
    управляет стилем шрифта текста,
    выведен­ного на метку Label.
    Управлять стилем будем посредством
    флажка CheckBox.

    Используя панель
    элементов Toolbox,
    в форму поместим метку label1
    и фла­жок
    checkBox1.
    В листинге 1.4 приведен текст программы
    управления этими объ­ектами.

    Листинг 1.4.
    Управление стилем шрифта

    // Программа
    управляет стилем шрифта текста,
    выведенного на метку

    // Label,
    посредством
    флажка
    CheckBox

    using System;

    using
    System.Drawing;

    using
    System. Windows.
    Forms
    ;

    // Другие директивы
    using
    удалены, поскольку они не используются

    //в данной программе

    namespace CheckBox

    {

    public
    partial class Form1 : Form

    {

    public
    Form1()

    {

    InitializeComponent();

    this.Text =
    «Флажок
    CheckBox»;

    checkBox1.Text
    = «Полужирный»;
    checkBox1.Focus();

    label1.Text
    = «Выбери
    стиль
    шрифта»;

    label1.TextAlign
    = ContentAlignment.MiddleCenter;

    label1.Font
    = new System.Drawing.Font(«Courier New», 14.0F);

    }

    private
    void checkBox1_CheckedChanged(object sender, EventArgs e)

    { // Изменение
    состояния флажка на противоположное

    if
    (checkBox1.Checked == true) label1.Font =

    new
    Font(«Courier New», 14.0F, FontStyle.Bold);

    if
    (checkBox1.Checked == false) label1.Font =

    new
    Font(«Courier New», 14.0F, FontStyle.Regular);

    }

    }

    }

    Сразу после вызова
    процедуры InitializeComponent
    задаем начальные значе­ния некоторых
    свойств объектов Form1
    (посредством
    ссылки this),
    label1
    и checkBox1.
    Так, тексту флажка, выводимого с правой
    стороны, присваиваем значе­ние
    «Полужирный«.
    Кроме того, при старте программы фокус
    должен находиться на флажке
    (checkBox1.Focus(),;),
    в этом случае пользователь может изменять
    ус­тановку флажка даже клавишей
    <Пробел>.

    Текст метки —
    «Выбери
    стиль шрифта
    «,
    выравнивание метки TextAlign
    задаем посередине и по центру (MiddleCenter)
    относительно всего того места, что
    предна­значено для метки. Задаем шрифт
    метки Courier
    New
    (в этом шрифте все буквы имеют одинаковую
    ширину) размером 14 пунктов.

    Изменение состояния
    флажка соответствует событию
    CheckedChanged.
    Чтобы получить пустой обработчик события
    CheckedChanged,
    следует дважды щелкнуть на элементе
    checkBox1
    вкладки Form1.cs
    [
    Design].
    Между соответствующими строчками
    следует записать (см. текст программы):
    если флажок установлен (т. е. содержит
    «галочку») Checked
    =
    true,
    то для метки label1
    устанавливается
    тот же шрифт Courier
    New,
    14 пунктов, но Bold,
    т. е. полужирный.

    Далее — следующая
    строчка кода: если флажок не
    установлен, т. е. checkBox1.Checked
    = false,
    то шрифт устанавливается Regular,
    Т.е. обычный. Очень часто эту ситуацию
    программируют, используя ключевое слово
    else
    (ина­че), однако это выражение будет
    выглядеть более выразительно и понятно
    так, как написали мы.

    Программа написана,
    нажмите клавишу <F5>.
    Проверьте работоспособность программы.
    В рабочем состоянии она должна работать
    примерно так, как показано на рис. 1.11.

    Рис. 1.11.
    Фрагмент работы программы управления
    стилем шрифта

    Убедиться в
    работоспособности программы можно,
    открыв решение CheckBox1.sin
    в папке CheckBox1.

    Пример 6. Побитовый
    оператор «исключающее ИЛИ»

    Несколько изменим
    предыдущую программу в части обработки
    события checkedchanged
    (Изменение состояния флажка). Вместо
    двух условий if
    ()
    напи­шем один оператор:

    Label1.Font
    = new Font(«Courier New», 14.0F,

    Label1.Font.Style
    ^
    FontStyle.Bold);

    Здесь каждый раз
    при изменении состояния флажка значение
    параметра label1.Font.style
    сравнивается с одним и тем же значением
    Fontstyle.Bold.
    По­скольку между ними стоит побитовый
    оператор ^
    (исключающее
    ИЛИ
    ), он будет
    назначать Bold,
    если текущее состояние lаЬеl1.Font.style
    «не Bold«.
    А если label1.
    Font.
    style
    пребывает в состоянии «Bold«,
    то оператор ^
    будет назначать состояние «не
    Bold«.
    Этот оператор еще называют логическим
    xor.

    Таблица истинности
    логического
    xor
    такова:

    A Xor В
    = С

    1. Xor 0=0

    2. Xor 0=1

    1. Xor 1=1

    2. Xor 1=0

    В нашем случае мы
    имеем всегда B
    = 1 (Fontstyle.Bold),
    а A
    (label1.Font.style)
    попеременно то
    Bold,
    то Regular
    (т. е. «не Bold»).
    Таким обра­зом, оператор ^
    всегда будет назначать противоположное
    тому, что записано в label1.Font.Style.

    Как видно, применение
    побитового оператора привело к
    существенному уменьшению количества
    программного кода. Использование
    побитовых операто­ров может значительно
    упростить написание программ со сложной
    логикой.

    Посмотрите, как
    работает программа, нажав клавишу <F5>.

    Теперь добавим в
    форму еще один элемент управления
    CheckBox.
    Мы собира­емся управлять стилем шрифта
    FontStyle
    двумя флажками. Один, как и прежде, задает
    полужирный стиль Bold
    или обычный Regular,
    а второй задает наклонный italic
    или возвращает в Regular.
    Текст новой программы приведен в листинге
    1.5.

    Листинг 1,5.
    Усовершенствованный программный код

    // Побитовый оператор
    «^»
    — исключающее ИЛИ

    using System;

    using
    System.Drawing;

    using
    System.Windows.Forms;

    // Другие директивы
    using
    удалены, поскольку они не используются

    // в данной программе

    namespace CheckBox2

    {

    public
    partial class Form1: Form

    {

    public
    Form1 ()

    {

    InitializeComponent();

    this.Text =
    «Флажок
    CheckBox»;

    checkBox1.Text
    = «Полужирный»;
    checkBox2.Text = «Наклонный»;

    label1.Text
    = «Выбери
    стиль
    шрифта»;

    label1.TextAlign
    = contentAlignment .MiddleCenter ;

    label1.Font
    = new Font(«Courier New», 14.0F);

    }

    private
    void checkBox1_CheckedChanged(object sender, EventArgs e)

    {

    Label1.Font
    = new Systerm.Drawing.Font(

    «Courier
    New», 14.0F, label1.Font.Style^
    Fontstyle.Bold);

    }

    private void
    checkBox2_CheckedChanged(object sender, EventArgs e)

    {

    Label1.Font
    = new System.Drawing.Font(

    «Courier
    New», 14.0F, label1.Font.Style ^
    FontStyle.Italic);

    }

    }

    }

    Как видно, здесь
    принципиально ничего нового нет, только
    лишь добавлена об­работка события
    изменения состояния флажка checkedchanged
    для checkBox2.
    фрагмент работы программы можно увидеть
    на рис. 1.12.

    Рис. 1.12.
    Фрагмент работы усовершенствованной
    программы

    Убедиться в
    работоспособности программы можно,
    открыв решение CheckBox2.sIn
    в папке CheckBox2.

    Пример 7. Вкладки
    TabControl
    и
    переключатели
    RadioButton

    Вкладки используются
    для организации управления и оптимального
    располо­жения экранного пространства.
    Выразительным примером использования
    вкладок является диалоговое окно
    Свойства
    обозревателя
    Internet
    Explorer.
    То есть если требуется отобразить
    большое количество управляемой
    информации, то весьма уместно использовать
    вкладки TabControl.

    Поставим задачу
    написать программу, позволяющую выбрать
    текст из двух вариантов, задать цвет и
    размер шрифта этого текста на трех
    вкладках TabControl
    с использованием переключателей
    RadioButton.

    Фрагмент работы
    программы приведен на рис. 1.13.

    Рис. 1.13.
    Программа с переключателями и вкладками

    Программируя
    поставленную задачу, создадим новый
    проект Windows
    Forms
    Application
    С#
    , назовем
    его, например, ВкладкиTabControl,
    получим стандартную форму. Затем,
    используя панель элементов Toolbox,
    в форму перетащим мышью элемент управления
    TabControl.
    Как видно, по умолчанию имеем две вкладки,
    а поусловию задачи, как показано на рис.
    1.13, три вкладки. Добавить третью вкладку
    можно в конструкторе формы, а можно
    программно.

    Вначале покажем,
    как добавить третью вкладку в конструкторе.
    Для этого в свойствах (окно Properties)
    элемента управления TabControl1
    выбираем свойство TabPages,
    в результате попадаем в диалоговое окно
    TabPage
    Collection
    Edit,
    где добавляем (кнопка Add)
    третью вкладку (первые две присутствуют
    по умолчанию) Эти вкладки нумеруются
    от нуля, т. е. третья вкладка будет
    распознаваться как TabPages(2).
    Название каждой вкладки» будем
    указывать в программном коде.

    Для того чтобы
    читатель в большей степени мог управлять
    всем процессом, мы покажем, как добавить
    третью вкладку не в конструкторе, а в
    программном коде сразу после вызова
    процедуры InitializeComponent
    (листинг 1.6). Однако, прежде чем перейти
    на вкладку программного кода, для каждой
    вкладки выбираем из па­нели Toolbox
    по два переключателя RadioButton,
    а в форму перетаскиваем метку Label.
    Теперь через щелчок правой кнопкой мыши
    в пределах формы переключа­емся на
    редактирование программного кода.

    Листинг 1.6.
    Использование вкладок и переключателей

    // Программа,
    позволяющая выбрать текст из двух
    вариантов, задать цвет

    //и размер шрифта
    для этого текста на трех вкладках
    TabControl

    // с использованием
    переключателей RadioButton

    using System;

    using System. Drawing;

    us ing
    System.Windows.Forms;

    // Другие директивы
    using
    удалены, поскольку они не используются

    //
    в
    данной
    программе

    namespace
    ВкладкиTabControl

    {

    public
    partial class Form1 : Form

    {

    public
    Form1()

    {

    InitializeComponent();

    // Создание
    третьей
    вкладки
    «программно»:

    System.Windows.Forms.TabPage
    tabPage3 =

    new
    System.Windows.Forms.TabPage();

    tabPage3.UseVisualStyleBackColor
    = true;

    // Добавление
    третьей вкладки в существующий набор

    // вкладок
    tabControl1:

    this.
    tabControl1.Controls. Add (tabPage3);

    //this.Visible
    = false;

    //
    Добавление
    переключателей
    5 и
    6 на
    третью
    вкладку:

    tаbРаgеЗ
    .Controls.Add(this.radioButton5);

    tabPage3.Controls.Add(this.radioButton6);

    //
    Расположение
    переключателей
    5 и
    6:

    this.radioButton5.Location
    = new System.Drawing.Point(20, 15);

    this.radioButton6.Location
    = new System.Drawing.Point(20, 58);

    this.Text =
    «Какая
    улыбка
    Вам
    ближе»;

    // Задаем
    названия
    вкладок:

    tabControl1.TabPages[0].Text
    = «Текст»;

    tabControl1.TabPages[1].Text
    = «Цвет»;

    tabControl1.TabPages[2].Text
    = «Размер»;

    // Эта пара
    переключателей изменяет текст:

    radioButton1.Text
    =

    «Восхищенная,
    сочувственная,nскромно-смущенная»;

    radioButton2.Text
    = «Нежная
    улыбка,
    ехидная,
    бес»
    +

    «стыжая,nподленькая,
    снисходительная»;

    // или

    //radioButton.2.
    Text
    = «Нежная улыбка, бесстыжая,» +

    //Environment.NewLine
    + «подленькая, снисходительная»;

    // Эта пара
    переключателей изменяет цвет текста:

    radioButton3.Text
    = «Красный»;

    radioButton4.Text
    = «Синий»;

    // Эта пара
    переключателей изменяет размет шрифта:

    radioButton5.Text
    = «11 пунктов»;

    radioButton6.Text
    = «13 пунктов»;

    label1.Text
    = radioButton1.Text;

    }

    // Далее
    — обработка
    событий
    изменения
    состояния
    шести
    переключателей

    private
    void radioButton1_CheckedChanged(object sender, EventArgs e)

    {

    Label1.
    Text = radioButton1 .Text;

    }

    private
    void radioButton2_CheckedChanged(object sender, EventArgs e) ,

    {
    label1.Text = radioButton2.Text; }

    private void
    radioButton3_CheckedChanged(object sender, EventArgs e)

    {
    label1.ForeColor = Color.Red; }

    private void
    radioButton4_CheckedChanged(object sender, EventArgs e)

    {
    label1.ForeColor = Color.Blue; }

    private void
    radioButton5_CheckedChanged(object sender, EventArgs e)

    {
    label1.Font = new Font(label1.Font.Name, 11); }

    private void
    radioButton6_CheckedChanged(object sender, EventArgs e)

    {
    label1.Font = new Font(label1.Font.Name, 13); }

    }

    }

    Как видно из текста
    программы, сразу после вызова процедуры
    InitializeComponent
    (этот программный код можно было бы
    задать при обработке события загрузки
    формы Form1_Load)
    создаем «программно» третью вкладку
    и до­бавляем ее в набор вкладок
    tabControl1,
    созданный в конструкторе. Далее
    «привя­зываем» пятый и шестой
    переключатели к третьей вкладке.

    Дальнейшие установки
    очевидны и не требуют дополнительных
    комментариев. Заметим, что каждая пара
    переключателей, расположенных на
    каком-либо элементе управления (в данном
    случае на различных вкладках), «отрицают»
    друг друга, т. е. если пользователь выбрал
    один, то другой переходит в противоположное
    со­стояние.

    Отслеживать
    изменения состояния переключателей
    удобно с помощью обработки событий
    переключателей checkchanged
    (см. листинг 1.6). Чтобы полу­чить пустой
    обработчик этого события в конструкторе
    формы, следует дважды щелкнуть на
    соответствующем переключателе и таким
    образом запрограммировать изменения
    состояния переключателей.

    Убедиться в
    работоспособности программы можно,
    открыв решение ВкладкиTabControl.sln
    в папке ВкладкиTabControl.

    Пример 8. Свойство
    Visible
    и
    всплывающая подсказка
    ToolTip
    в стиле
    Balloon

    Продемонстрируем
    возможности свойства visible
    (Видимый). Программа пи­шет в метку
    Label
    некоторый текст, а пользователь с помощью
    командной кнопки делает этот текст
    невидимым, а затем опять видимым и т. д.
    При зависании мыши над кнопкой появляется
    подсказка «Нажми
    меня
    «.

    Запускаем Visual
    Studio
    2010
    , далее
    выбираем пункты меню File
    | New | Project | Windows Forms Application C#

    и
    нажимаем
    кнопку
    ОК.
    Затем из
    панели элементов управления Toolbox
    в форму перетаскиваем метку Label,
    кнопку Button
    и всплывающую подсказку ToolTip.
    Только в этом случае каждый элемент
    управ­ления в форме (включая форму)
    получает свойство ToolTip
    on
    Tip.
    Убедитесь в этом, посмотрев свойства
    (окно Properties)
    элементов управления.

    Для кнопки button1
    напротив свойства ToolTip
    on
    Tip
    мы могли бы написать «Нажми
    меня
    «.
    Однако я предлагаю написать это
    непосредственно в программном коде. В
    этом случае программист не будет долго
    искать соответствующее свойство, когда
    станет применять данный фрагмент в
    своей новой программе!

    Перейдем на вкладку
    программного кода— щелчок правой
    кнопкой мыши в пределах формы и выбор
    команды View
    Code.
    Окончательный текст программы представлен
    в листинге 1.7.

    Листинг 1.7.
    Свойство
    visible
    и всплывающая подсказка
    ToolTip

    II Программа
    пишет в метку Label
    некоторый текст, а пользователь

    // с
    помощью командной кнопки делает этот
    текст либо видимым, либо

    //
    невидимым.
    Здесь использовано свойство Visible.
    При зависании мыши

    // над кнопкой
    появляется подсказка «Нажми меня»
    (свойство ToolTip).

    Using System;

    Using System.Drawing;

    Using
    System.Windows.Forms;

    // Другие директивы
    using
    удалены, поскольку они не используются

    // в данной программе

    namespace Visible

    {

    public
    partial class Form1 : Form

    {

    public
    Form1()

    {

    InitializeComponent();

    base.Text
    = «Житейская мудрость»;

    label1.Text
    = «Сколько ребенка не учи хорошим
    манерам,n»
    +

    «он будет
    поступать так, как папа с мамой»;

    Label1.TextAlign
    = ContentAlignment.MiddleCenter;

    button1.Text
    = «Кнопка»;

    toolTip1.SetToolTip(button1,
    «Кнопкаrnсчастья»);

    // Должна ли
    всплывающая подсказка использовать
    всплывающее окно:

    toolTip1.isBalloon
    = true;

    // Если IsBalloon
    = false,
    то используется стандартное

    //
    прямоугольное
    окно

    }

    private
    void button1_Click(object sender, EventArgs e)

    { // Обработка
    события «щелчок на кнопке».

    // Можно
    программировать
    так:

    // if
    (label1.Visible == true) label1.Visible = false;

    // else
    label1.Visible = true;

    // или
    так:

    //
    label1.Visible = label1.Visible ^
    true;

    // здесь ^
    — логическое исключающее ИЛИ,

    // или
    совсем
    просто:

    Label1.Visible
    = !label1.Visible;

    }

    }

    }

    Сразу после вызова
    процедуры InitializeComponent
    свойству Text
    метки при­сваиваем некоторый текст,
    «склеивая» его с помощью знака
    «плюс» (+)
    из отдель­ных фрагментов. Использование
    в текстовой строке символов «n»
    (или «rn»)
    означает перенос текста на новую строку
    (это так называемый перевод
    каретки
    ).
    Можно
    переводить каретку с помощью строки
    Environment.NewLine.
    В перечисле­нии Environment
    можно выбрать и другие управляющие
    символы. Свойство метки TextAlign
    располагает текст метки по центру и
    посередине (MiddleCenter).
    Выражение, содержащее ToolTip1,
    устанавливает (set)
    текст всплывающей подсказки для кнопки
    button1
    при «зависании» над ней указателя
    мыши (рис. 1.14). По умол­чанию свойство
    isBalloon
    пребывает в состоянии false,
    и при этом во всплываю­щей подсказке
    используется стандартное прямоугольное
    окно, установка isBalloon
    =
    true
    переводит подсказку в стиль комиксов
    (в стиль Balloon),
    см. рис. 1.14.

    Чтобы в программном
    коде получить пустой обработчик события
    «щелчок мышью на кнопке», следует
    в дизайнере (конструкторе) формы (т. е.
    на вкладке Form1.cs[Designer])
    дважды щелкнуть на кнопке
    button1.
    При обработке этого события, как видно,
    закомментированы пять строчек, в которых
    записана логика включения видимости
    метки или ее выключение. Логика абсолютно
    понятна: если свойство видимости
    (visible)
    включено
    (true),
    то его следует выключить
    (false);
    иначе (else)
    — включить.

    Рис. 1.14.
    Фрагмент работы программы

    Несколько путано,
    но разобраться можно. И все работает.
    Проверьте! Кнопку можно нажимать мышью,
    клавишей <Enter>
    и клавишей <Пробел>.

    Однако можно пойти
    другим путем. Именно поэтому пять строчек
    этой слож­ной логики переведены в
    комментарий. Мы уже встречались с
    побитовым операто­ром ^(исключающее
    ИЛИ). Напоминаю, что этот оператор, говоря
    кратко, выбира­ет «да» (true),
    сравнивая «нет» и «да», и
    выбирает «нет» (false),
    сравнивая «да» и «да». Однако
    можно еще более упростить написание
    программного кода: label1.visible
    = !
    label1.Visible;

    To
    есть при очередной передаче управления
    на эту строчку свойство label1.visible
    будет принимать противоположное
    значение. Вы убедились, что можно
    по-разному программировать подобные
    ситуации.

    Как видно, мы
    использовали много закомментированных
    строчек программно­го кода. Очень
    удобно комментировать строки программного
    кода в редакторе Visual
    Studio,
    вначале выделяя их, а затем использовать
    комбинацию клавиш

    <Ctrl>+<K>
    | <С> (
    Comment).
    Чтобы убрать с нескольких строк знак
    комментария, можно аналогично вначале
    отметить их, а затем пользоваться уже
    дугой комбина­цией клавиш <Ctrl>+<K>
    | <
    U>
    (
    Uncomment).

    Текст программы
    можно посмотреть, открыв решение
    Visible.sln
    в папке Visible.

    Пример 9. Калькулятор
    на основе комбинированного списка
    ComboBox

    Элемент управления
    ComboBox
    служит для отображения вариантов выбора
    в выпадающем списке. Продемонстрируем
    работу этого элемента управления на
    примере программы, реализующей функции
    калькулятора. Здесь для отображения
    вариантов выбора арифметических операций
    используется комбинированный спи­сок
    ComboBox.

    После запуска
    Visual
    Studio
    2010
    и выбора
    шаблона Windows
    Forms
    Applica­tion
    С#
    из панели
    Toolbox
    перетащим в форму два текстовых поля
    TextBox,
    метку Label
    и комбинированный список ComboBox.

    Текст программы
    представлен в листинге 1.8.

    Листинг 1.8.
    Суперкалькулятор

    // Программа,
    реализующая функции калькулятора. Здесь
    для отображения

    // вариантов выбора
    арифметических действий используется
    комбинированный

    // список
    ComboBox using System;

    using
    System.Windows.Forms;

    // Другие директивы
    using
    удалены, поскольку они не используются

    // в данной программе

    namespace ComboBox_Calc

    {

    public
    partial class Form1 : Form

    {

    public
    Form1()

    {

    InitializeComponent();

    comboBox1.Text
    = «Выбери
    операцию»;

    comboBox1.Items.AddRange(new
    string[] {«Прибавить»,

    «Отнять»,
    «Умножить»,
    «Разделить»,
    «Очистить»});

    comboBox1.Tablndex
    = 2;

    textBox1.Clear(); textBox2.Clear();

    textBox1.Tablndex
    = 0; textBox2.Tablndex = 1;

    this.Text =
    «Суперкалькулятор»;

    label1.Text
    = «Равно:
    «;

    }

    private
    void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

    {

    // Обработка события
    изменения индекса выбранного элемента

    label1.Text
    = «Равно: «;

    // Преобразование
    из строковой переменной в Single:

    Single X,
    Y, Z = 0;

    bool
    Число_ли1
    = single.TryParse(textBox1.Text,
    Systern.Globalization.NumberStyles.Number,

    System.Globalization.NumberFormatlnfo.Currentlnfo,
    out X);

    bool
    Число_ли2
    = Single.TryParse(textBox2.Text,
    System.Globalization.NumberStyles.Number,

    System.Globalization.NumberFormatlnfo.Currentlnfo,
    out Y) ;

    if
    (Число_ли1 == false
    || Число_ли2 == false)

    {

    MessageBox.Show(«Следует
    вводить числа!», «Ошибка»,

    MessageBoxButtons.OK,
    MessageBoxIcon.Error);

    return;

    }

    // Оператор
    множественного выбора:

    switch
    (comboBox1.Selectedlndex)

    // Выбор арифметической
    операции:

    case
    0: // Выбрали «Прибавить»:

    Z = X + Y; break;

    case
    1: // Выбрали «Отнять»:

    Z
    = X
    — Y;
    break;

    case
    2: // Выбрали «Умножить»:

    Z = X * Y; break;

    case
    3: // Выбрали «Разделить»:

    Z
    = X
    / Y;
    break;

    case
    4: // Выбрали «Очистить»:

    textBoxl.Clear();
    textBox2.Clear();

    label1.Text
    = «Равно:
    «; return;

    }

    Label1.Text
    = string.Format(«Равно
    {0:F5}», Z) ;

    }

    }

    }

    В данной программе
    сразу после вызова процедуры
    InitializeComponent
    при­сваиваем начальные значения
    некоторым свойствам, в том числе задаем
    коллекцию элементов комбинированного
    списка: «Прибавить», «Отнять»
    и т. д. Здесь также задаем табличные
    индексы Tabindex
    для текстовых полей и комбинированного
    списка. Табличный индекс определяет
    порядок
    обхода элементов.
    Так,
    при старте программы фокус будет
    находиться в первом текстовом поле,
    поскольку мы назначили textBox1.
    Tablndex
    =
    0.
    Далее при нажатии пользователем клавиши
    <ТаЬ>
    будет происходить переход от элемента
    к элементу соответственно табличным
    индексам (рис. 1.15).

    Рис. 1.15.
    Переход от одного текстового поля к
    другому

    При обработке
    события «изменение индекса выбранного
    элемента» comboBox1_SelectedIndexChanged
    помощью функции TryParse
    проверяем, можно ли текстовые поля
    преобразовать в число. Первым параметром
    метода TryParse
    является анализируемое поле. Второй
    параметр — это разрешаемый для
    преобра­зования стиль числа, в данном
    случае типа Number,
    т. е. десятичное число, которое имеет
    целую и дробную части. Третий параметр
    указывает, на какой основе фор­мируется
    допустимый формат, в нашем случае мы
    использовали CurrentInfо,
    т. е. на основе текущего языка и региональных
    параметров. По умолчанию при инстал­ляции
    руссифицированной версии Windows
    разделителем целой и дробной частей
    числа является запятая. Однако эту
    установку можно изменить, если в Панели
    управления выбрать значок Язык
    и региональные стандарты
    ,
    а затем на вкладке Региональные
    параметры

    щелкнуть на кнопке Настройка и на
    появившейся но­вой вкладке указать
    в качестве разделителя целой и дробной
    частей точку вместо запятой. В обоих
    случаях (и для запятой, и для точки) метод
    TryParse
    будет рабо­тать так, как указано на
    вкладке Региональные
    параметры
    .

    Четвертый параметр
    метода
    TryParse
    возвращает результат преобразования.
    Кроме того, функция TryParse
    возвращает булеву переменную true
    или false,
    ко­торая сообщает, успешно ли выполнено
    преобразование. Как видно из текста
    про­граммы, если хотя бы одно поле
    невозможно преобразовать в число, то
    програм­мируем сообщение «Следует
    вводить числа!
    »
    и выход из процедуры обработки события
    с помощью оператора return.

    Далее оператор
    switch
    осуществляет множественный выбор
    арифметической операции в зависимости
    от индекса выбранного элемента списка
    selectedindex.
    Оператор switch
    передает управление той или иной «метке
    case«.
    Причем, как го­ворят программисты,
    оператор множественного выбора в
    С-подобных языках в от­личие от других
    языков, например Basic,
    «проваливается», т. е. управление
    перехо­дит на следующую метку case,
    поэтому приходится использовать оператор
    break
    для выхода
    из switch.

    Последний оператор
    в процедуре осуществляет формирование
    строки с помо­рю метода string.Format
    для вывода ее на метку label1.
    Формат » {0:F5
    озна­чает, что значение переменной z
    следует выводить по фиксированному
    формату с „пятью
    знаками
    после
    запятой (или точки). Заметьте, в этом
    примере даже не при­шлось программировать
    событие деления на ноль. Система Visual
    Studio
    сделала это за нас (см. рис. 1.15).

    Убедиться в
    работоспособности программы можно,
    открыв решение ComboBox_Calc.sln
    в папке ComboBox_Calc.

    Пример 10. Вывод
    греческих букв, символов математических
    операторов. Кодовая таблица
    Unicode

    Немного ликбеза.
    Хранение текстовых данных в памяти ЭВМ
    предполагает
    кодирование символов по какому-либо
    принципу.
    Таких
    кодировок несколько. Каж­дой кодировке
    соответствует своя таблица символов.
    В этой таблице каждой ячей­ке
    соответствуют номер в таблице и символ.
    Мы упомянем такие кодовые таблицы:
    ASCII,
    ANSI
    Cyrillic
    (другое название этой таблицы— Windows
    1251
    ), а также
    Unicode.

    Первые две таблицы
    являются однобайтовыми, т. е. каждому
    символу соответ­ствует 1 байт данных.
    Поскольку в 1 байте — 8 битов, байт может
    принимать 28
    = 256 различных состояний, этим состояниям
    можно поставить в соответствие 256 разных
    символов. Так, в таблице ASCII
    от 0 до 127 —
    базовая таблица — есть английские
    буквы, цифры, знаки препинания, управляющие
    символы. От 128 до 255 — это расширенная
    таблица, в ней находятся русские буквы
    и символы псев­дографики. Некоторые
    из этих символов соответствуют клавишам
    IBM-совмести­мых
    компьютеров. Еще эту таблицу называют
    «ДОСовской» по имени операцион­ной
    системы MSDOS,
    где она применяется. Эта кодировка
    используется также в Интернете.

    В операционной
    системе Windows
    используется преимущественно ANSI
    (Windows
    1251
    ). Базовые
    символы с кодами от 0 до 127 в этих таблицах
    совпадают, а расширенные — нет. То есть
    русские буквы в этих таблицах находятся
    в разных местах таблицы. Из-за этого
    бывают недоразумения. В ANSI
    нет символов псевдо­графики. ANSI
    Cyrillic
    — другое название кодовой таблицы
    Windows
    1251
    .

    Существует также
    двухбайтовый стандарт Unicode.
    Здесь один символ кодиру­ется двумя
    байтами. Размер такой таблицы кодирования
    — 216
    = 65 536 ячеек. Ко­довая таблица Unicode
    включает в
    себя практически все современные
    письменно­сти. Разве что здесь нет
    старославянских букв. Когда в текстовом
    редакторе MS
    Word
    мы выполняем команду Вставка
    | Символ
    , то
    вставляем символ из таб­лицы Unicode.
    Также в Блокноте
    можно сохранять файлы в кодировке
    Unicode:
    Сохранить
    как | Кодировка Юникод
    .
    В этом случае в Блокноте
    будут, например, греческие буквы,
    математические операторы ∏,
    ∆, ∑
    и проч.
    Кстати, греческая буква Σ
    и математический оператор
    занимают разные ячейки в Unicode.
    Размер файла при сохранении в Блокноте
    будет ровно в два раза большим.

    Напишем программу,
    которая приглашает пользователя ввести
    радиус R,
    чтобы
    вычислить длину окружности. При
    программировании этой задачи длину
    окружно­сти в метке Label
    назовем греческой буквой β,
    приведем формулу для вычислений с
    греческой буквой π
    = 3,14. Результат вычислений выведем в
    диалоговое окно MessageBox
    также с греческой буквой.

    После традиционного
    запуска Visual
    Studio
    2010
    и выбора
    шаблона Windows
    Forms
    Application
    С#
    перетащим
    в форму две метки Label,
    текстовое поле TextBox
    и командную кнопку Button.
    Посмотрите на рис. 1.16, так должна выглядеть
    форма после программирования этой
    задачи.

    Рис. 1.16.
    Фрагмент работы программы, использующей
    символы Unicode

    Вывод греческих
    букв на метку label1
    и в диалоговое окно MessageBox
    можно осуществить, например, таким
    путем. В текст программы через буфер
    обмена вставляем греческие буквы из
    текстового редактора MS
    Word.
    Поскольку по умол­чанию Visual
    Studio
    2010
    сохраняет
    cs-файлы
    в формате Unicode,
    в принципе таким образом можно
    программировать вывод греческих букв
    и других символов на фор­му и на другие
    элементы управления.

    Более технологично
    пойти другим путем, а именно будем
    вставлять подобные символы с помощью
    функции convert.ToChar,
    а на вход этой функции будем по­давать
    номер символа в таблице Unicode.
    В этом случае, даже если cs-файл
    будет сохранен в традиционной для
    Блокнота
    кодировке ANSI,
    программа будет работать корректно.
    Номер символа в таблице Unicode
    легко выяснить, выбрав в редакторе MS
    Word
    пункты меню Вставка
    | Символ
    .
    Здесь в таблице следует найти, этот
    символ и соответствующий ему код знака
    в шестнадцатеричном представлении.
    Чтобы перевести шестнадцатеричное
    представление в десятичное, следует
    перед шестнадцатеричным числом поставить
    .
    Например, после выполнения оператора
    n
    = 0хЗВ2
    в
    переменной n
    будет записано десятичное число 946. На
    этом месте в таблице Unicode
    расположена греческая буква β.

    Именно таким
    образом запрограммирована данная задача
    (листинг 1.9).

    Листинг 1.9.
    Использование символов
    Unicode

    // Программа
    демонстрирует возможность вывода в
    текстовую метку, а также

    // в
    диалоговое окно MessageBox
    греческих букв. Программа приглашает

    //пользователя
    ввести радиус R,
    чтобы вычислить длину окружности

    using
    System;

    using
    System.Windows.Forms;

    II
    другие
    директивы using
    удалены, поскольку они не используются

    //в данной программе

    namespace Unico

    {

    public
    partial class Form1 : Form

    {

    public
    Form1()

    { //
    Инициализация
    нового
    экземпляра
    класса
    System.Windows.Forms.Form InitializeComponent();

    base.Font =
    new System.Drawing.Font(«Times New Roman», 12.0F);

    base.Text =
    «Греческие
    буквы»;
    button1.Text = «Вычислить»;

    // бета
    = 2 x Пи
    x R

    Label1.Text
    = string.Format(

    «Найдем
    длину
    окружности:n
    {0} = 2{1}{2}{1}R,nгде
    {2} = {3}»,

    Convert.ToChar(0x3B2),
    Convert.ToChar(0x2219),

    // 0=бета 1
    — точка

    Convert.ToChar(ОхЗСО),
    Math.
    PI)
    ;

    // 2 — Пи 3 — число Пи

    label2.Text
    = «Введите
    радиус
    R:»;

    textBox1.Clear()
    ;

    }

    private
    void button1_Click(object sender, EventArgs e)

    { //
    Проверка
    — число
    ли
    введено:

    Single R;
    // — радиус

    bool
    Число_ли
    = Single.TryParse(textBox1.Text,
    System.Globalization.NumberStyles.Number,

    System.Globalization.NumberFormatlnfo.Currentlnfo,
    out R);

    if
    (Число_ли == false)

    {

    MessageBox.Show(«Следует
    вводить числа!», «Ошибка»,

    MessageBoxButtons.OK,
    MessageBoxIcon.Error); return;

    }

    Single beta
    = 2 * (Single)Math.PI * R;

    // 0x3B2 —
    греческая
    буква
    бета

    MessageBox.Show(String.Format(«Длина
    окружности
    {0} = {1:F4}»,

    Convert.ToChar(0x3B2),
    beta), «Греческая
    буква»);

    }

    }

    } I

    Как видно из
    программного кода, сразу после вызова
    процедуры InitializeComponent
    мы задали шрифт Times
    New
    Roman,
    12
    пунктов
    для формы, этот шрифт будет распространяться
    на все элементы управления на форме, т.
    е. на
    текстовое
    поле, метку и командную кнопку. Далее,
    используя метод string.Format,
    инициализировали свойство Text
    метки label1.
    Различные шестнадцатеричные номера
    соответствуют греческим буквам и
    арифметической операции «умножить»,
    в инициализации строки участвует также
    константа π = 3,14. Ее болев
    точное
    значение получаем из Math.PI.
    Escape-последовательность
    «n»
    используем для переноса текста на новую
    строку. Так называемый перевод каретки
    можно осуществить также спомощью строки
    NewLine
    из перечисления Environment.

    Обрабатывая событие
    button1_click
    (щелчок на кнопке), мы проверяем с помощью
    метода TryParse,
    число ли введено в текстовое поле. Если
    пользователь ввел число (true),
    то метод TryParse
    возвращает значение радиуса R.
    При
    вычислении длины окружности beta
    приводим значение константы Math.PI
    из типа
    Double
    к типу Single
    посредством неявного преобразования.
    После вычисления длины окружности beta
    выводим ее значение вместе с греческой
    буквой β
    Convert.ToChar(0хЗВ2)
    В диалоговое окно MessageBox.
    Здесь используем метод string.Format.
    Выражение «{0:F4}»
    означает,
    что значение переменной beta
    следует выводить по фиксированному
    формату с четырьмя знаками после запятой.

    Данная программа
    будет корректно отображать греческие
    буквы, даже если от крыть файл Form1.cs
    текстовым редактором Блокнот
    и сохранить его в кодировке ANSI.
    Убедиться в работоспособности программы
    можно, открыв решение Unico.sln
    в папке Unico.

    Понравилась статья? Поделить с друзьями:
  • Как в виндовс 7 запустить точку восстановления windows
  • Как в биосе поставить загрузку с жесткого диска на windows 10
  • Как в windows forms вывести текст
  • Как в виндовс 10 удалить предыдущую версию windows
  • Как в биосе поставить загрузку windows 10 с ssd диска