У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 23 Тема- Динамическое создание кнопок в среде Develop и Visul Studio Цель- Изучить технол

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 28.12.2024

ВМСиС 2013

Лабораторная работа № 23

Тема: Динамическое создание кнопок в среде  #Develop и Visual Studio

Цель: Изучить технологию динамического создания компонентов программы и методов обращения к ним на примере программы «Калькулятор».

Внешний вид работающей программы, которую необходимо разработать приведен на рис.1.

  

Рис. 1.

Пояснения:

Статически (используя палитру компонентов) установить только один компонент – метку для визуализации результатов ввода или вычислений. Кнопки создаются без палитры – самой программой.

 

 Создание проекта:

- Создать папку для программы (в именах пути русские буквы не использовать).

- Выбрать последовательность вложенных меню: <File><New><Project>, и в появившемся окне выбрать язык “Visual C#” и вид программы “Windows Application”.

- Указать имя и путь для проекта в нижних строках окна и сохранить его. Рекомендуется указывать номер группы, номер работы и инициалы исполнителей работы.

- Расположить на форме компонент-метку (для визуализации результатов ввода или вычислений калькулятора).

- Ввести текст программы, которая содержит только один обработчик прерываний «Button_Click», который создается вручную. Разберитесь в назначении использованных операторов.

- Выполнить индивидуальное задание в соответствии с вариантом.

- Выполнив задание, предъявить его преподавателю для проверки.

Таблица вариантов.

№ варианта

Задание

Исполнитель

1

Дополнить калькулятор кнопкой вычисления абсолютной величины.

2

Дополнить калькулятор кнопкой вычисления косинуса.

3

Дополнить калькулятор кнопкой вычисления тангенса

4

Дополнить калькулятор кнопкой вычисления деления

5

Дополнить калькулятор кнопкой вычисления остатка целочисленного деления

6

Дополнить калькулятор кнопкой вычисления арктангенса

7

Дополнить калькулятор кнопкой вычисления арксинуса

8

Дополнить калькулятор кнопкой вычисления логарифма

9

Дополнить калькулятор кнопкой вычисления экспоненты

10

Дополнить калькулятор кнопкой вычисления квадратного корня

11

Дополнить калькулятор кнопкой вычисления гиперболического синуса

12

Дополнить калькулятор кнопкой вычисления арккосинуса

13

14

15

16

17

18


Пример текста разрабатываемой программы в среде #
Develop

 


Пример текста разрабатываемой программы в среде
Visual Studio

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

   {

       private const int bw = 40, bh = 22; // размер кнопки

       private const int dx = 5, dy = 5; // расстояние между кнопками   

       // кнопки 

       private Button[] btn = new Button[15];    

       // текст на кнопках

       char[] btnText = {'7','8','9','+',

                         '4','5','6','-',

                         '1','2','3','=',

                         '0',',','c'};        

       // кнопку будем идентифицировать

       // по значению свойства Tag

       int[] btnTag = {7,8,9,-3,

                       4,5,6,-4,

                       1,2,3,-2,

                       0,-1,-5};

       private double ac = 0;  // аккумулятор

       private int op = 0 ;     // код операции

       private Boolean fd; // fd == true - ждем первую цифру числа,

       // например, после нажатия кнопки +

       // fd == false - ждем следующую

       // цифру или нажатие кнопки операции;

       public Form1()

       {

           InitializeComponent();

           fd = true;

           // создать кнопки

           int x, y;    // координаты кнопки

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

           this.ClientSize =

               new Size(4*bw + 5*dx, 5*bh + 7*dy);

           // задать размер и положение индикатора

           label1.SetBounds(dx, dy, 4*bw + 3*dx, bh);

           label1.Text = "0";

           y = label1.Bottom + dy ;            

           // создать кнопки

           int k =0; // номер кнопки

           for ( int i=0; i < 4; i++)

           {

               x = dx;

               for (int j = 0; j < 4; j++)

               {

                   if ( !((i == 3 ) && (j == 0)))

                   {

                       // создать и настроить кнопку

                       btn[k] = new Button();

                       btn[k].SetBounds(x, y, bw, bh);

                       btn[k].Tag = btnTag[k];

                       btn[k].Text = btnText[k].ToString();

                       

                       // задать функцию обработки

                       // события Click

                       this.btn[k].Click += new

                           System.EventHandler(this.Button_Click);

                       if (btnTag[k] < 0)

                       {

                           // кнопка операции

                           btn[k].BackColor = SystemColors.ControlLight;

                       }

                       // поместить кнопку на форму

                       this.Controls.Add(this.btn[k]);

                       x = x + bw + dx;

                       k++;

                   }

                   else // кнопка ноль

                   {

                       // создать и настроить кнопку

                       btn[k] = new Button();

                       btn[k].SetBounds(x, y, bw * 2 + dx, bh);

                       btn[k].Tag = btnTag[k];

                       btn[k].Text = btnText[k].ToString();

                       // задать функцию обработки

                       // события Click

                       this.btn[k].Click += new

                           System.EventHandler(this.Button_Click);

                       // поместить кнопку на форму

                       this.Controls.Add(this.btn[k]);

                       x = x + 2*bw + 2*dx;

                       k++;

                       j++;

                   }

               }

               y = y + bh + dy;

           }

       }

       // щелчок на кнопке

       private void Button_Click(object sender, System.EventArgs e)

       {

           // нажатая кнопка

           Button btn = (Button)sender;

           // кнопки 1..9

           if ( Convert.ToInt32(btn.Tag) > 0)

           {

               if ( fd )

               {

                   // на индикаторе ноль, т.е.

                   // это первая цифра

                   label1.Text = btn.Text;

                   fd = false;

               }

               else

                   label1.Text += btn.Text;

               return;

           }

           // ноль

           if (Convert.ToInt32(btn.Tag) == 0)

           {

                if (fd) label1.Text = btn.Text;

                if (label1.Text != "0")

                       label1.Text += btn.Text;

                return;

           }

           // запятая

           if ( Convert.ToInt32(btn.Tag) == -1 )

           {

               if (fd)

               {

                   label1.Text = "0,";

                   fd = false;

               }

               else

                   if (label1.Text.IndexOf(",") == -1)

                     label1.Text += btn.Text;

               return;

           }

           // "с" - очистить

           if (Convert.ToInt32(btn.Tag) == -5 )

           {

               ac = 0; // очистить аккумулятор

               op = 0;

               label1.Text = "0";            

               fd = true; // снова ждем первую цифру

               return;

           }

           // кнопки "+","-","="

           if (Convert.ToInt32(btn.Tag) < -1)

           {

               double n; // число на индикаторе

               n = Convert.ToDouble(label1.Text);

               // Нажатие клавиши операции означает что пользователь

               // ввел операнд. Если в аккумуляторе есть число, то

               // выполним операцию. Если это не так, запомним

               // операцию, чтобы выполнить ее при следующем нажатии

               // клавиши операции.

               if (ac != 0)

               {

                   switch (op)

                   {

                       case -3: ac += n;  break;

                       case -4: ac -= n;  break;

                       case -2: ac = n;  break;

                   }

                   label1.Text = ac.ToString("N");

               }

               else { ac = n; }

               

               op = Convert.ToInt32(btn.Tag); // запомнить операцию

               fd = true; // ждем следующее число   

            }

       }

   }

}




1. Оргция деят ФКСтрра ФК
2. РЕФЕРАТЕ студентов и слушателей Дзержинского филиала РАНХиГС Утверждаю Директор Дзержинско
3. Реферат- Развіццё вучнёскага самакіраавння ў сучаснай школе
4. благородных истин.html
5. ЛАБОРАТОРНАЯ РАБОТА 11
6. ТемаСравнительный анализ антивирусных программ Учащийся Димов Владимир
7. экономические показатели
8. реферат дисертації на здобуття наукового ступеня кандидата економічних наук Київ ~ 2001 Ди
9. Проекты и идеи направленные на сотворение и созидание Будущей России 2
10. Контрольная работа- Правящая элита и ее роль в политике
11. Банки, задачи и реклама
12. Give Russin equivlents of the following- Sickleve exmintion recovery hedche to sneeze consultingroom chemist remedy to sprin to fit mputtion wrd to limp splinter injection.html
13. Тема 1 Понятие ГПП как отрасли права
14. Information Society Concept
15. СТАТЬЯ 107 УК РФ План- Введение
16. Стандартизация и сертификация Вопросы ГАК по дисциплине Статистические методы контроля и управления к
17. хроническое рецидивирующее заболевание формирующееся в результате нарушений нервных и гуморальных механи
18. РАЛЛИ ПИКНИКТУР 2 ноября 2013 г
19. вступает в силу 1 января 2012 года Запрещенный список 2012 Всемирный антидопинговый кодекс Вступает в силу 1 ян.
20. СЕСТРИНСКОЕ ДЕЛО В ПЕДИАТРИИ ПЕДИАТРИЯ ПО СПЕЦИАЛЬНОСТЯМ 279 01 31 СЕСТРИНСКОЕ ДЕЛО 279 01 01 ЛЕЧЕБНОЕ Д