Here are
164 public repositories
matching this topic…
Notepad++ Editor is one of the most important programs on any computer that everyone uses every day. The most popular and popular editor in Windows operating systems is Notepad, which is definitely familiar to everyone.
-
Updated
May 27, 2023 -
C#
It is a desktop application. Admin can entry category, company, stock in, stock out all information easily and view individual report.
-
Updated
Sep 3, 2019 -
C#
Multithreading In C#
-
Updated
Dec 14, 2019 -
C#
-
Updated
Feb 7, 2024 -
C#
ArdeshirV.Forms is a customized version of everyday windows .Net forms like About Box, Error Handler, Splash Screen and my base windows form with many fantastic ability.
-
Updated
Feb 5, 2025 -
C#
🎯 Um simples CRUD feito com C# (Windows Form Application) e MySQL
-
Updated
Jan 31, 2020 -
C#
Translator solution created in Visual Studio using .NET Framework, C# and Google Cloud Translation API.
-
Updated
Apr 25, 2021 -
C#
Work Features of a Manager in Hotel Management System. Login, Universal Search field where the manager can search using any data type, CRUD an entry of a customer, Room Availability & Reservation, Room bill Payment, Food Service (Order food and add to bill), Bill Generation in pdf format
-
Updated
Jul 26, 2022 -
C#
A Windows Forms library for solving real life problems.
-
Updated
Jul 23, 2019 -
C#
Kullanıcıların sinema bileti satın alabileceği uygulama.
-
Updated
Jun 17, 2022 -
C#
Major Project for 2nd-year ITP module in SLIIT BSc(Hons) in Information Technology Specializing in Software Engineering.
-
Updated
Apr 23, 2020 -
C#
A KUCSA Association desktop depicting afew operations of the club. Demonstrates some usage of CSharp in real-world-app
-
Updated
Apr 28, 2017 -
C#
A project that recreates the classic Super Mario Bros game using C# and Visual Studio’s Windows Forms Application platform. A modern interpretation of a timeless classic!
-
Updated
Jul 27, 2023 -
C#
A simple project that reads data from pulse meter CMS50D+ in real time and displays it in a chart.
-
Updated
Apr 19, 2017 -
C#
Goal to make this APP is to Track all the activities of Students,Trainers details. Allows to report generation for analysys.
-
Updated
Aug 8, 2018 -
C#
This is a windows form game which work with TCP protocol.
-
Updated
Sep 8, 2021 -
C#
This project presents a simple Chat Message Service and Client Application demonstration. The Chat Service is a self-hosted (service host) WCF application launched and managed with a simple console interface. The service prints to the console window the user activities (log on, log off) and what messages are sent to users. The client “tester” ha…
-
Updated
Nov 5, 2019 -
C#
Uygulamanın Amacı;Otel Otmasyonunun masaüstü uygulaması olarak geliştirilmesi. Kullanılan Teknolojiler: C#, Visual Studio, Sql Server Management Studio, Ado.Net, N-Tier Katmanlı Mimari
-
Updated
Dec 8, 2017 -
C#
C# Cricket Game project with a stunning UI and a nice game algorithm developed to demonstrate OOP concepts and many other things.
-
Updated
Feb 29, 2024 -
C#
Russian checkers on C# with mini-max and alpha-beta pruning
-
Updated
May 28, 2022 -
C#
Improve this page
Add a description, image, and links to the
windows-form-application
topic page so that developers can more easily learn about it.
Curate this topic
Add this topic to your repo
To associate your repository with the
windows-form-application
topic, visit your repo’s landing page and select «manage topics.»
Learn more
- Windows Forms приложение на языке F#
- Перестройка консольного приложения
- Структура кода приложения
- Модуль инициализации элементов управления
- Модуль создания формы приложения
- Модуль рабочего кода приложения
- Модуль запуска работы приложения
- Исходник Windows Forms F#
Windows Forms приложение на языке F#
Приложение Windows Forms создано на основе консольной F# программы. Код приложения разделён на несколько логических модулей. Модули инициализации элементов управления и формы сгруппированы в отдельной папке. Программный код интерактивности приложения также вынесен в отдельный модуль. Такое построение напоминает разделённый на частичные классы приложение языка C#. В приложение добавлен простейший код F# для демонстрации интерактивности приложения.
На основе предлагаемого приложения можно заниматься изучением языка программирования F#. В оконном приложении гораздо нагляднее смотрятся результаты функций и выражений. Кроме того, на основе данного исходника, можно создавать вполне работоспособные приложения на языке F#.
Перестройка консольного приложения
Прежде всего в интегрированной среде программирования MS Visual Studio 2019 создаётся консольное приложение для языка F#. На данный момент для приложения выбрана максимальная целевая платформа .NET5.
Для поддержки функционирования каркаса Windows Forms в файле проекта консольного приложения необходимо сделать соответствующие изменения. В 16 версии Visual Studio нет возможностей визуального добавления поддержки платформы Windows Forms для проектов языка F# (появилась в 17 версии студии), поэтому изменим файл проекта вручную, в встроенном текстовом редакторе. В окне обозревателя решений щелкаем правой кнопкой мыши над именем проекта и в появившемся диалоговом окне вызываем текстовый редактор для файла проекта.
В окне текстового редактора отобразится следующая XML-разметка:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<WarnOn>3390;$(WarnOn)</WarnOn>
</PropertyGroup>
<ItemGroup>
<Compile Include="Program.fs" />
</ItemGroup>
</Project>
Код, заключенный в теге элемента PropertyGroup следует заменить как показано ниже в листинге изменённой XML-разметки файла проекта:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net5.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
<ItemGroup>
<Compile Include="Program.fs" />
</ItemGroup>
</Project>
После перезагрузки проекта, в обозревателе решений, в зависимостях проекта, можно увидеть добавленную платформу Microsoft.Windows.Desktop.App.WindowsForms для поддержки оконных элементов.
Структура кода приложения
Структура предлагаемого приложения Windows Forms на языке F# состоит из четырех файлов-модулей. Три файла — InitControls.fs, FormModule.fs, CodeFormModule.fs — формируют код формы и находятся в одном пространстве имён. Один — Program.fs — это общий файл запуска приложения. Файлы — InitControls.fs, FormModule.fs — в которых происходит инициализация формы и элементов управления сгруппированы в папку.
Файл формы CodeFormModule.fs, предназначенный для рабочего кодирования, вынесен за пределы папки формы. Такое построение структуры модулей позволило отделить код инициализации формы и визуальных элементов управления от программного кода бизнес-логики приложения.
Модуль в контексте языка программирования F# — это основной способ группирования логически связанного программного кода. Модули могут представлять из себя отдельные файлы или же в одном файле можно объявить несколько модулей. Описываемая структура приложения создавалась именно с целью распределить логически родственные коды F# по отдельным модулям приложения.
Модуль инициализации элементов управления
InitControls.fs — файл-модуль F# объявления и инициализации элементов управления перед добавлением в главную форму приложения. Модуль содержит несколько функций, составные выражения которых возвращают полностью подготовленные элементы для размещения на форме.
Для примера взяты табличный контейнер TableLayoutPanel и четыре кнопки Button, динамически размещаемые в ячейках табличного элемента управления.
Листинг кода модуля InitControls.fs:
namespace MyWindowsForm
open System.Windows.Forms
open System.Drawing
module InitControls =
// --- Объявление и инициализация свойств элементов управления ---
// Виды кнопок.
let standardButton = Size(100, 70)
let plumpButton = Size(200,200)
let tableLayoutPanel =
let tlp = new TableLayoutPanel()
tlp.CellBorderStyle <- TableLayoutPanelCellBorderStyle.Single
tlp.ColumnCount <- 2
tlp.RowCount <- 2
tlp.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)) |> ignore
tlp.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)) |> ignore
tlp.RowStyles.Add(new RowStyle(SizeType.Percent, 50F)) |> ignore
tlp.RowStyles.Add(new RowStyle(SizeType.Percent, 50F)) |> ignore
tlp.Dock <- DockStyle.Fill
tlp.Name <- "tlp"
tlp
let button1 =
let btn = new Button()
btn.Name <- "button1"
btn.Size <- standardButton
btn.TabIndex <- 0
btn.Text <- "button1"
btn.Anchor <- AnchorStyles.None
btn.BackColor <- Color.BlueViolet
btn
let button2 =
let btn = new Button()
btn.Name <- "button2"
btn.Size <- standardButton
btn.TabIndex <- 1
btn.Text <- "button2"
btn.Anchor <- AnchorStyles.None
btn.BackColor <- Color.Chartreuse
btn
let button3 =
let btn = new Button()
btn.Name <- "button3"
btn.Size <- standardButton
btn.TabIndex <- 2
btn.Text <- "button3"
btn.Anchor <- AnchorStyles.None
btn.BackColor <- Color.CadetBlue
btn
let button4 =
let btn = new Button()
btn.Name <- "button4"
btn.Size <- standardButton
btn.TabIndex <- 3
btn.Text <- "button4"
btn.Anchor <- AnchorStyles.None
btn.BackColor <- Color.BurlyWood
btn
Модуль создания формы приложения
Модуль FormModule.fs предназначен для объявления собственного класса MyForm
формы приложения. В этом же модуле создаётся объект MyForm
и к нему добавляются элементы управления предварительно инициированные в модуле InitControls.fs.
Для формирования внешнего вида приложения элементы добавляются к форме внутри поля между спаренными методами SuspendLayout() — ResumeLayout(). Данные методы исключают повторы перерасчета макета формы при добавлении каждого элемента и запускают формирование макета только после вызова метода ResumeLayout(). Конечно, если форма состоит из нескольких элементов, спаренные методы заметно не увеличивают производительность. Но с учётом возможного роста создаваемого проекта приложения, такое построение кода создания формы всё же желательно использовать, тем более что накладные расходы при вызовах SuspendLayout() — ResumeLayout() не существенны.
Программный код модуля формы FormModule.fs:
namespace MyWindowsForm
open System.Windows.Forms
open System.Drawing
open InitControls
module FormModule =
// --- Модуль создания и инициализации формы ---
type MyForm() =
inherit Form()
do
base.Text <- "Windows Form F#"
base.StartPosition <- FormStartPosition.CenterScreen
base.Size <- new Size(800, 600)
base.TopMost <- true
// Создаем собственную форму.
let myForm = new MyForm()
// Приостановка работы макетов.
// Приостановка актуальна при большом количестве визуальных элементов.
// Уменьшает время визуализации формы.
tableLayoutPanel.SuspendLayout()
myForm.SuspendLayout()
// Кнопки добавляются в контейнер TableLayoutPanel.
tableLayoutPanel.Controls.Add(button1, 0, 0)
tableLayoutPanel.Controls.Add(button2, 1, 0)
tableLayoutPanel.Controls.Add(button3, 1, 1)
tableLayoutPanel.Controls.Add(button4, 0, 1)
tableLayoutPanel.Controls.Add(button4, 0, 1)
// Код для исследования работы тандема методов
// SuspendLayout() - ResumeLayout()
// Если раскомментировать данный код и
// закомментировать вызовы SuspendLayout(), ResumeLayout(),
// можно заметить задержку показа формы.
// Если только раскомментировать этот код
// визуализация формы происходит значительно быстрее.
(*
for i = 0 to 2000 do
let btn = new Button()
btn.Name <- "button" + (i+10).ToString()
btn.Size <- new Size(220, 120)
btn.Text <- "button4"
btn.Anchor <- AnchorStyles.None
btn.Dock <- DockStyle.None
tableLayoutPanel.Controls.Add(btn, 0, 1)
*)
// Добавляем таблицу на форму.
myForm.Controls.Add(tableLayoutPanel)
// Возобновляем работу макетов.
tableLayoutPanel.ResumeLayout(false);
myForm.ResumeLayout(false);
Модуль рабочего кода приложения
Модуль F# CodeFormModule.fs предназначен для рабочего кода приложения, это модуль взаимодействия элементов управления и бизнес-логики приложения.
Здесь находятся методы обработки событий компонентов формы, здесь же осуществляется изменение свойств элементов и формы для обеспечения интерактивности программы.
namespace MyWindowsForm
open System
open System.Windows.Forms
open InitControls
open FormModule
open System.Drawing
// --- Модуль рабочего кода формы ---
module Code =
let myCodeForm = myForm
myCodeForm.Text <- "Выполнение модуля CodeFormModule"
button1.Text <- "Первая кнопка"
button2.Text <- "Вторая кнопка"
button3.Text <- "Третья кнопка"
button4.Text <- "Четвертая кнопка"
// Определение вида кнопки.
let isStandart (btn: Button) : bool = btn.Size = standardButton
// Обработчик события нажатия для всех кнопок
let buttons_Click (sender:System.Object) (e:System.EventArgs) : unit =
let button: Button = sender :?> Button
if button = button1 then Console.Beep(300, 300)
if button = button2 then Console.Beep(500, 300)
if button = button3 then Console.Beep(1000, 300)
if button = button4 then Console.Beep(3000, 300)
// Если кнопка стандартная, то делаем её пухлой,
// и наоборот.
if isStandart button then
button.Size <- plumpButton
else
button.Size <- standardButton
// Подключение обработчиков событий
button1.Click.AddHandler( new System.EventHandler(buttons_Click) )
button2.Click.AddHandler( new System.EventHandler(buttons_Click) )
button3.Click.AddHandler( new System.EventHandler(buttons_Click) )
button4.Click.AddHandler( new System.EventHandler(buttons_Click) )
Модуль запуска работы приложения
В модуле F# Program.fs находится код настроек и запуска приложения.
open System.Windows.Forms
open MyWindowsForm
// Стили элементов управления для поддержки тем операционной системы.
Application.EnableVisualStyles()
// Режим отображения текста в окнах приложения.
// Улучшает качество отображения строк.
// Повышает графическую производительность приложения.
Application.SetCompatibleTextRenderingDefault(false)
// Запускает стандартный цикл обработки сообщений приложения
// в текущем потоке и делает указанную форму видимой.
Application.Run(Code.myCodeForm)
Исходник Windows Forms F#
Исходник написан в интегрированной среде программирования MS Visual Studio 2019, тестировался в Visual Studio 2022 Preview 4.
Скачать исходник
Тема: «WinForms F# — интерактивное приложение»
WinAppFSharp-vs17.zip
Размер:1482 КбайтЗагрузки:221
Рассмотрим создание потоков на языке Visual C++. На примере программы в Visual Studio разберем основы и применение необходимых классов. В конце урока вы найдете видео, в котором тема раскрывается более подробно.
В видеоуроке рассказывается, как заменить стандартную тему оформления Windows Forms на стиль Material Design от Google. Проект создается на языке программирования C#.
Несомненно в языке C# и фреймворке .NET есть средства для печати документов и текста с помощью принтера. В данной статье описано, как вывести на печать текст программно. А для тех, кто больше любит смотреть, чем читать — в конце материла находится видеоурок…
Компонент ListView (из Windows Forms) предназначен для вывода текстовых данных. Создавая столбцы в нем, нельзя выбирать тип данных (например, изображения). Тем не менее способ вывода изображений в элемент управления ListView существует. Рассмотрим его на примере.
Рассмотрим выполнение запросов SELECT, INSERT, UPDATE и DELETE к базе данных Microsoft Access из программы на языке C#, на примере проекта Windows Forms в Visual Studio. В конце статьи вы найдете исходники, а также видеоурок по данной теме.
В Windows Forms табличные данные удобно выводить с помощью элемента управления DataGridView. В статье покажем, как это сделать на примере таблицы из базы данных и языка программирования C#.
В статье рассмотрим алгоритм перевода цветного изображения в черно-белое и напишем его реализацию на языке C#. Приводится исходный код программы, написанной в Visual Studio — приложение Windows Forms.
В статье рассмотрим способ создания «резинового» интерфейса в формах Windows Forms и разберёмся, как растянуть элементы на форме при изменении размера окна программы.
Покажем, как выполнить перенос строки в TextBox с атрибутом Multiline (когда текстовое поле занимает несколько строк). Сделаем это на примере программы в Windows Forms и языка C#.
Научимся работе с API на языке программирования C#. В этом уроке мы напишем программу в Visual Studio на Windows Forms, которая будет переводить текст с русского языка на английский и обратно при помощи веб-запросов к API Яндекс Переводчика. Также можно…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 |
// Автор:ValeraGin ICQ:583890030 E-Mail:valeragin@gmail.com Дата:16.08.2009 #apptype windows #reference 'System.Windows.Forms.dll' #reference 'System.Drawing.dll' #mainresource 'SimpleCalc.res' uses System.Windows.Forms, System.Drawing; const /// максимальное количество символов в Edit'e MaxCountSymbolsInEdit = 24; /// отступ кнопок от левого края XIndent = 5; /// Отступ кнопок от верхнего края YIndent = XIndent+37+XIndent; /// ширина кнопок ButtonWidth = 55; /// высота кнопок ButtonHeigth = 40; /// промежуток между кнопками ButtonInterval = 6; /// Размер шрифта для кнопок ButtonFontSize = 14; FormClientWidth = XIndent+(ButtonWidth*5)+(ButtonInterval*4)+XIndent; FormClientHeigth = YIndent+(ButtonHeigth*5)+(ButtonInterval*4)+XIndent; // цвета кнопок NumbersColor = Color.FloralWhite; FunctionColor = Color.AntiqueWhite; MemoryColor = Color.LightGray; CEColor = Color.PowderBlue; VK_Enter = 13; VK_Back = 8; VK_Add = 107; VK_Subtract = 109; VK_Divide = 111; VK_Multiply = 106; type Buttons = (bMemoryAdd, bMemorySubstract, bMemoryClear, bMemoryRecall, bPlus, bSqrt, d7, d8, d9, bDivision, bPow, d4, d5, d6, bMultiplication, b1x, d1, d2, d3, bSubtraction, bClear, d0, bPoint, bExactly, bAddition); TAction = (None, Addition, Subtraction, Multiplication, Division); var CalcForm: Form; ResultEdit: TextBox; Memory: real; SaveLastNumber: real; CurrentAction:=None; NeedClearEdit: boolean; LastAction:=None; LastNumber: real; ButtonsArray: array of button; ButtonsColor: array of color := (MemoryColor, MemoryColor, MemoryColor, MemoryColor, FunctionColor, FunctionColor, NumbersColor, NumbersColor, NumbersColor, FunctionColor, FunctionColor, NumbersColor, NumbersColor, NumbersColor, FunctionColor, FunctionColor, NumbersColor, NumbersColor, NumbersColor, FunctionColor, CEColor, NumbersColor, NumbersColor, FunctionColor, FunctionColor); ButtonsNames: array of string := ('MS', 'M-', 'MC', 'MR', '+/-', '√‾', '7', '8', '9', '/', 'x²', '4', '5', '6', '*', '1/x', '1', '2', '3', '-', 'CE', '0', '.', '=', '+'); procedure DoExactly; begin if CurrentAction<>none then begin if SaveLastNumber<>0 then begin var NowReal: real; if TryStrToFloat(ResultEdit.Text, NowReal) then begin if not ((NowReal=0) and (CurrentAction=Division)) then begin var ResultOperation: real; case CurrentAction of Addition: ResultOperation:=SaveLastNumber+NowReal; Subtraction: ResultOperation:=SaveLastNumber-NowReal; Multiplication: ResultOperation:=SaveLastNumber*NowReal; Division: ResultOperation:=SaveLastNumber/NowReal; end; ResultEdit.Text:=FloatToStr(ResultOperation); NeedClearEdit:=True; end else begin ResultEdit.Text:='Ошибка!'; NeedClearEdit:=True; end; end; end; end else if (LastAction<>none) and (LastNumber<>0) then begin var NowReal: real; if TryStrToFloat(ResultEdit.Text, NowReal) then begin if not ((LastNumber=0) and (LastAction=Division)) then begin var ResultOperation: real; case LastAction of Addition: ResultOperation:=NowReal+LastNumber; Subtraction: ResultOperation:=NowReal-LastNumber; Multiplication: ResultOperation:=NowReal*LastNumber; Division: ResultOperation:=NowReal/LastNumber; end; ResultEdit.Text:=FloatToStr(ResultOperation); NeedClearEdit:=True; end else begin ResultEdit.Text:='Ошибка!'; NeedClearEdit:=True; end; end; end; CurrentAction:=None; end; procedure SetArithmeticOperations(Action: TAction); begin if (CurrentAction<>None) and (not NeedClearEdit) then DoExactly; if ResultEdit.Text.Length<>0 then begin if TryStrToFloat(ResultEdit.Text, SaveLastNumber) then begin NeedClearEdit:=True; CurrentAction:=Action; LastAction:=Action; LastNumber:=SaveLastNumber; end; end; end; procedure AddSymbolToEdit(ch: char); begin if NeedClearEdit then begin if ch='.' then exit; ResultEdit.Text:=''; NeedClearEdit:=False; end; if (ResultEdit.Text.Length>MaxCountSymbolsInEdit) then exit; if char.IsNumber(ch) then begin if ResultEdit.Text='0' then ResultEdit.Text:=ch else ResultEdit.Text+=ch end else if ch = '.' then if (ResultEdit.Text.IndexOf('.')=-1) then ResultEdit.Text+=ch; end; // Событие при нажатие на любую кнопку procedure ButtonOnClick(sender: Object; e: System.EventArgs); begin case Buttons(System.&Array.IndexOf(ButtonsArray, (sender as Button))) of d0: AddSymbolToEdit('0'); d1: AddSymbolToEdit('1'); d2: AddSymbolToEdit('2'); d3: AddSymbolToEdit('3'); d4: AddSymbolToEdit('4'); d5: AddSymbolToEdit('5'); d6: AddSymbolToEdit('6'); d7: AddSymbolToEdit('7'); d8: AddSymbolToEdit('8'); d9: AddSymbolToEdit('9'); bPoint: AddSymbolToEdit('.'); bClear: begin CurrentAction:=None; SaveLastNumber:=0; ResultEdit.Text:='0'; end; bAddition: begin SetArithmeticOperations(Addition); end; bSubtraction: begin SetArithmeticOperations(Subtraction); end; bMultiplication: begin SetArithmeticOperations(Multiplication); end; bDivision: begin SetArithmeticOperations(Division); end; bSqrt: begin var r: real; if TryStrToFloat(ResultEdit.Text, r) then ResultEdit.Text:=FloatToStr(sqrt(r)); end; bPow: begin var r: real; if TryStrToFloat(ResultEdit.Text, r) then ResultEdit.Text:=FloatToStr(r*r); end; b1x: begin var r: real; if TryStrToFloat(ResultEdit.Text, r) then ResultEdit.Text:=FloatToStr(1/r); end; bExactly: begin DoExactly; end; bMemoryAdd: begin if ResultEdit.Text.Length<>0 then begin if Memory=0 then begin if TryStrToFloat(ResultEdit.Text, Memory) then begin if Memory<>0 then begin ButtonsArray[0].Text:='M+'; ButtonsArray[1].Enabled:=True; ButtonsArray[2].Enabled:=True; ButtonsArray[3].Enabled:=True; end; end; end else Memory+=StrToFloat(ResultEdit.Text); end; end; bMemorySubstract: begin if ResultEdit.Text.Length<>0 then begin if Memory<>0 then begin var r: real; if TryStrToFloat(ResultEdit.Text, r) then begin Memory-=r; if Memory=0 then begin ButtonsArray[0].Text:='MS'; ButtonsArray[1].Enabled:=False; ButtonsArray[2].Enabled:=False; ButtonsArray[3].Enabled:=False; end; end; end; end; end; bMemoryRecall: begin if Memory<>0 then ResultEdit.Text:=FloatToStr(Memory); end; bMemoryClear: begin ButtonsArray[0].Text:='MS'; ButtonsArray[1].Enabled:=False; ButtonsArray[2].Enabled:=False; ButtonsArray[3].Enabled:=False; Memory:=0; end; bPlus: begin if ResultEdit.Text[1]<>'-' then ResultEdit.Text:=ResultEdit.Text.Insert(0, '-') else ResultEdit.Text:=ResultEdit.Text.Remove(0, 1); end; end; end; procedure OnKeyPress(sender: Object; e: KeyPressEventArgs); begin if ((char.IsNumber(e.KeyChar)) or (e.KeyChar = '.')) then AddSymbolToEdit(e.KeyChar); case ord(e.KeyChar) of VK_Back: if (ResultEdit.Text.Length>0) and (ResultEdit.Text<>'0') then begin ResultEdit.Text := ResultEdit.Text.Substring(0,ResultEdit.Text.Length-1); if ResultEdit.Text.Length=0 then ResultEdit.Text:='0'; end; VK_Enter:DoExactly; VK_Add:SetArithmeticOperations(Addition); VK_Subtract:SetArithmeticOperations(Subtraction); VK_Multiply:SetArithmeticOperations(Multiplication); VK_Divide:SetArithmeticOperations(Division); end; end; procedure OnEnter(sender: Object; e: System.EventArgs); begin CalcForm.ActiveControl := nil; end; procedure InitControls; begin // Создаем TEdit ResultEdit := new TextBox; ResultEdit.RightToLeft:=RightToLeft.Yes; ResultEdit.BackColor:=Color.White; ResultEdit.SetBounds(XIndent, XIndent, FormClientWidth-(XIndent*2), 30); ResultEdit.Font:=new Font(new FontFamily('Tahoma'), 16, FontStyle.Regular); ResultEdit.KeyPress+=OnKeyPress; ResultEdit.ReadOnly := True; ResultEdit.TabStop := False; ResultEdit.Enter += OnEnter; ResultEdit.Text:='0'; CalcForm.Controls.Add(ResultEdit); // Создаем кнопки var XPos:=XIndent; var YPos:=YIndent; SetLength(ButtonsArray, Length(ButtonsNames)); var ButtonFont:=new Font(new FontFamily('Tahoma'), ButtonFontSize, FontStyle.Regular); for var i:=0 to Length(ButtonsNames)-1 do begin ButtonsArray[i]:= new Button; ButtonsArray[i].SetBounds(XPos, YPos, ButtonWidth, ButtonHeigth); ButtonsArray[i].Click+=ButtonOnClick; ButtonsArray[i].KeyPress+=OnKeyPress; ButtonsArray[i].Text:=ButtonsNames[i]; ButtonsArray[i].Font:=ButtonFont; ButtonsArray[i].BackColor:=ButtonsColor[i]; ButtonsArray[i].TabStop := False; ButtonsArray[i].Enter += OnEnter; if (Buttons(i)=bMemoryRecall) or (Buttons(i)=bMemorySubstract) or (Buttons(i)=bMemoryClear) then ButtonsArray[i].Enabled:=False; CalcForm.Controls.Add(ButtonsArray[i]); // Определяем координаты следующей кнопки, которая будет создана XPos:=XPos+ButtonInterval+ButtonWidth; if (((i+1) mod 5)=0) and (i<>0) then begin XPos-=((ButtonInterval+ButtonWidth)*5); YPos+=ButtonInterval+ButtonHeigth; end; end; end; begin // Создаем форму CalcForm := new Form; CalcForm.Text := 'Simple Calculator'; CalcForm.ClientSize:= new Size(FormClientWidth,FormClientHeigth); CalcForm.FormBorderStyle:=FormBorderStyle.FixedSingle; CalcForm.MaximizeBox:=False; CalcForm.BackColor:=Color.White; CalcForm.KeyPress+=OnKeyPress; // Добавлем на неё компоненты InitControls; // Включаем тему WinXP Application.EnableVisualStyles; // Запускаем приложение Application.Run(CalcForm); end. |
Программа написана на языке программирования C#. Среда разработки Visual Studio 2015.
Курсовой проект состоит из отдельных четырех задач из книги Волкова А.И.Программирование (Visual C#). Практикум по освоению методов и приемовразработки программ.– М.: МЭСИ, 2015.– 62 с.
Задачи:
1. Сортировка выбором
Сортировка одномерного массива по убыванию методом выбора и вывод результата на экран.
В приложении предусмотреть возможность ввода одномерного массива:
– генерацией массива из заданного количества случайных целых чисел, равномерно распределенных в заданном диапазоне;
– вводом из существующего текстового файла;
– вводом с клавиатуры в текстовое поле исходного массива.
В приложении предусмотреть возможность вывода одномерного массива:
– в текстовое поле в приложении
– в текстовый файл
2. Поиск элемента в матрице
Определить номера строк матрицы порядка N * M, в которых хотя бы один элемент равен заданному числу C, после чего умножить элементы данных строк на заданное число D.
В приложении предусмотреть возможность ввода двумерного массива:
– генерацией массива из заданного количества случайных целых чисел, равномерно распределенных в заданном диапазоне;
– вводом из существующего текстового файла;
– вводом с клавиатуры в текстовое поле исходного массива.
В приложении предусмотреть возможность вывода двумерного массива:
– в текстовое поле в приложении
– в текстовый файл
3. Системы счисления
Реализовать набор подпрограмм для выполнения следующих операций над натуральными числами в Р-ичной системе счисления (2≤P≤9):
а) сложение, вычитание, умножение, деление;
б) перевод из десятичной системы счисления в Р-ичную;
в) перевод из Р-ичной системы счисления в десятичную;
г) функция проверки правильности записи числа в Р-ичной системе счисления;
д) функции, реализующие операции отношения (равно, не равно, больше или равно,
меньше или равно, больше, меньше).
- Возвести число в степень (основание и показатель степени записаны в Р-ичной системе счисления). Ответ выдать в Р-ичной и десятичной системах счисления.
- Дан массив А — массив чисел, записанных в Р-ичной системе счисления. Отсортировать его в порядке убывания. Ответ выдать в Р-ичной и десятичной системах счисления.
В приложении предусмотреть возможность ввода числа:
– вводом из существующего текстового файла;
– вводом с клавиатуры в текстовое поле.
В приложении предусмотреть возможность вывода числа:
– в текстовое поле в приложении
– в текстовый файл
4. Поиск слова в тексте
Дана строка, содержащая текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз.
В приложении предусмотреть возможность ввода текста:
– генерацией строки из заданного количества букв, цифр, символов.
– вводом из существующего текстового файла;
– вводом с клавиатуры в текстовое поле.
В приложении предусмотреть возможность вывода текста:
– в текстовое поле в приложении
– в текстовый файл
В проекте
- добавлены 2 отдельных класса для конвертиции между системами счисления и для визуализации успешного/неуспешного сохранения данных, которые легко можно интегрировать в другие проекты.
- реализована обработка (и устранение) возможных ошибок при вводе исходных данных
Содержание архива
- Исходники на C# Microsoft Visual Studio 2015
- Отчет(53с.), который содержит постановку задач, блок-схемы алгоритмов, текст программы и тестовые примеры