Добавьте файлы проекта.
This commit is contained in:
parent
0396adddb6
commit
dcfd7c6e70
21 changed files with 1928 additions and 0 deletions
13
.idea/.idea.calculator/.idea/.gitignore
generated
vendored
Normal file
13
.idea/.idea.calculator/.idea/.gitignore
generated
vendored
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Rider ignored files
|
||||||
|
/modules.xml
|
||||||
|
/contentModel.xml
|
||||||
|
/projectSettingsUpdater.xml
|
||||||
|
/.idea.calculator.iml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
1
.idea/.idea.calculator/.idea/.name
generated
Normal file
1
.idea/.idea.calculator/.idea/.name
generated
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
calculator
|
||||||
4
.idea/.idea.calculator/.idea/encodings.xml
generated
Normal file
4
.idea/.idea.calculator/.idea/encodings.xml
generated
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
|
||||||
|
</project>
|
||||||
8
.idea/.idea.calculator/.idea/indexLayout.xml
generated
Normal file
8
.idea/.idea.calculator/.idea/indexLayout.xml
generated
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="UserContentModel">
|
||||||
|
<attachedFolders />
|
||||||
|
<explicitIncludes />
|
||||||
|
<explicitExcludes />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
BIN
8cc9f128-5008-40be-a6a7-0cf2658ed379.jfif
Normal file
BIN
8cc9f128-5008-40be-a6a7-0cf2658ed379.jfif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 78 KiB |
134
Controller/CaculatorController.cs
Normal file
134
Controller/CaculatorController.cs
Normal file
|
|
@ -0,0 +1,134 @@
|
||||||
|
using calculator.Model;
|
||||||
|
using calculator.Services;
|
||||||
|
using calculator.View;
|
||||||
|
|
||||||
|
namespace calculator.Controller;
|
||||||
|
|
||||||
|
public class CaculatorController
|
||||||
|
{
|
||||||
|
private readonly ICaculator _caculator;
|
||||||
|
private readonly IInputService _inputService;
|
||||||
|
private readonly ICaculatorView _view;
|
||||||
|
private readonly CaculatorData _data;
|
||||||
|
|
||||||
|
public CaculatorController(ICaculator caculator, IInputService inputService, ICaculatorView view,
|
||||||
|
CaculatorData data)
|
||||||
|
{
|
||||||
|
_caculator = caculator;
|
||||||
|
_inputService = inputService;
|
||||||
|
_view = view;
|
||||||
|
_data = data;
|
||||||
|
|
||||||
|
_view.OperandPressed += OnOperandPressed;
|
||||||
|
_view.OperatorPressed += OnOperatorPressed;
|
||||||
|
_view.ClearPressed += OnFullClearPressed;
|
||||||
|
_view.CalculatePressed += OnCalculatePressed;
|
||||||
|
_view.SingleOperatorPressed += OnSingleOperationPressed;
|
||||||
|
OnFullClearPressed();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnSingleOperationPressed(string obj)
|
||||||
|
{
|
||||||
|
_data.Operation = null;
|
||||||
|
if (_data.Operands.Count == 2 && _data.Caculated == false)
|
||||||
|
{
|
||||||
|
OnCalculatePressed();
|
||||||
|
}
|
||||||
|
|
||||||
|
_data.Caculated = true;
|
||||||
|
_data.SingleOperation = obj;
|
||||||
|
var operand = _data.Operands.Pop();
|
||||||
|
_data.Operands.Push(_caculator.SingleOperation(operand, obj));
|
||||||
|
_view.UpdateView(_data.Operands.Peek());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnFullClearPressed()
|
||||||
|
{
|
||||||
|
Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnCalculatePressed()
|
||||||
|
{
|
||||||
|
if (_data.Operation is null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_data.SingleOperation is not null)
|
||||||
|
{
|
||||||
|
var singleOperand = _data.Operands.Pop();
|
||||||
|
_data.Operands.Push(_caculator.SingleOperation(singleOperand, _data.SingleOperation));
|
||||||
|
_view.UpdateView(_data.Operands.Peek());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_data.Operands.Count < 2)
|
||||||
|
{
|
||||||
|
var (lastOperand, lastOperation) = (_data.LastOperand, _data.Operation);
|
||||||
|
if (lastOperand is not null && lastOperation is not null)
|
||||||
|
{
|
||||||
|
Calculate(_data.Operands.Pop(), lastOperand, lastOperation);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var operand = _data.Operands.Pop();
|
||||||
|
var operand2 = _data.Operands.Pop();
|
||||||
|
Calculate(operand2, operand, _data.Operation);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Calculate(string operand1, string operand2, string operation)
|
||||||
|
{
|
||||||
|
_data.Caculated = true;
|
||||||
|
_data.LastOperand = operand2;
|
||||||
|
_data.Operands.Push(_caculator.Calculate(operand1, operand2, operation));
|
||||||
|
_view.UpdateView(_data.Operands.Peek());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Clear(string value = "0", bool full = true)
|
||||||
|
{
|
||||||
|
if (full)
|
||||||
|
{
|
||||||
|
_data.Operands.Clear();
|
||||||
|
_data.Operation = null;
|
||||||
|
_data.SingleOperation = null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_data.Operands.TryPop(out _);
|
||||||
|
}
|
||||||
|
|
||||||
|
_data.Caculated = false;
|
||||||
|
_data.LastOperand = null;
|
||||||
|
_data.Operands.Push(value);
|
||||||
|
_view.UpdateView(_data.Operands.Peek());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnOperatorPressed(string operation)
|
||||||
|
{
|
||||||
|
_data.SingleOperation = null;
|
||||||
|
if (_data.LastOperand is not null && _data.Caculated == false)
|
||||||
|
{
|
||||||
|
OnCalculatePressed();
|
||||||
|
}
|
||||||
|
|
||||||
|
_data.Operation = operation;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnOperandPressed(char obj)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (_data is { Operands.Count: 1, Operation: not null })
|
||||||
|
{
|
||||||
|
_data.Operands.Push("0");
|
||||||
|
}
|
||||||
|
else if (_data is { Caculated: true })
|
||||||
|
{
|
||||||
|
Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
var operand = _data.Operands.Pop();
|
||||||
|
|
||||||
|
|
||||||
|
_data.Operands.Push(_inputService.TryInput(operand + obj));
|
||||||
|
_view.UpdateView(_data.Operands.Peek());
|
||||||
|
}
|
||||||
|
}
|
||||||
948
Form1.Designer.cs
generated
Normal file
948
Form1.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,948 @@
|
||||||
|
namespace calculator
|
||||||
|
{
|
||||||
|
partial class Form1
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
panel1=new Panel();
|
||||||
|
button49=new Button();
|
||||||
|
button50=new Button();
|
||||||
|
button51=new Button();
|
||||||
|
button52=new Button();
|
||||||
|
button53=new Button();
|
||||||
|
button44=new Button();
|
||||||
|
button45=new Button();
|
||||||
|
button46=new Button();
|
||||||
|
button47=new Button();
|
||||||
|
button48=new Button();
|
||||||
|
button39=new Button();
|
||||||
|
button40=new Button();
|
||||||
|
button41=new Button();
|
||||||
|
button42=new Button();
|
||||||
|
button43=new Button();
|
||||||
|
button34=new Button();
|
||||||
|
button35=new Button();
|
||||||
|
button36=new Button();
|
||||||
|
button37=new Button();
|
||||||
|
button38=new Button();
|
||||||
|
button23=new Button();
|
||||||
|
button30=new Button();
|
||||||
|
button31=new Button();
|
||||||
|
button32=new Button();
|
||||||
|
button33=new Button();
|
||||||
|
InverseButton=new Button();
|
||||||
|
MultButton=new Button();
|
||||||
|
SixButton=new Button();
|
||||||
|
FiveButton=new Button();
|
||||||
|
FourButton=new Button();
|
||||||
|
EqualButton=new Button();
|
||||||
|
PlusButton=new Button();
|
||||||
|
DotButton=new Button();
|
||||||
|
ZeroButton=new Button();
|
||||||
|
MinusButton=new Button();
|
||||||
|
ThreeButton=new Button();
|
||||||
|
TwoButton=new Button();
|
||||||
|
OneButton=new Button();
|
||||||
|
PercentButton=new Button();
|
||||||
|
DivideButton=new Button();
|
||||||
|
NineButton=new Button();
|
||||||
|
EightButton=new Button();
|
||||||
|
SevenButton=new Button();
|
||||||
|
SqrtButton=new Button();
|
||||||
|
NegativeButton=new Button();
|
||||||
|
button8=new Button();
|
||||||
|
CE_button=new Button();
|
||||||
|
button10=new Button();
|
||||||
|
button5=new Button();
|
||||||
|
button4=new Button();
|
||||||
|
button3=new Button();
|
||||||
|
button2=new Button();
|
||||||
|
button1=new Button();
|
||||||
|
groupBox1=new GroupBox();
|
||||||
|
radioButton3=new RadioButton();
|
||||||
|
radioButton2=new RadioButton();
|
||||||
|
radioButton1=new RadioButton();
|
||||||
|
textBox1=new TextBox();
|
||||||
|
linkLabel1=new LinkLabel();
|
||||||
|
linkLabel2=new LinkLabel();
|
||||||
|
linkLabel3=new LinkLabel();
|
||||||
|
panel1.SuspendLayout();
|
||||||
|
groupBox1.SuspendLayout();
|
||||||
|
SuspendLayout();
|
||||||
|
//
|
||||||
|
// panel1
|
||||||
|
//
|
||||||
|
panel1.BackColor=Color.MediumSlateBlue;
|
||||||
|
panel1.Controls.Add(button49);
|
||||||
|
panel1.Controls.Add(button50);
|
||||||
|
panel1.Controls.Add(button51);
|
||||||
|
panel1.Controls.Add(button52);
|
||||||
|
panel1.Controls.Add(button53);
|
||||||
|
panel1.Controls.Add(button44);
|
||||||
|
panel1.Controls.Add(button45);
|
||||||
|
panel1.Controls.Add(button46);
|
||||||
|
panel1.Controls.Add(button47);
|
||||||
|
panel1.Controls.Add(button48);
|
||||||
|
panel1.Controls.Add(button39);
|
||||||
|
panel1.Controls.Add(button40);
|
||||||
|
panel1.Controls.Add(button41);
|
||||||
|
panel1.Controls.Add(button42);
|
||||||
|
panel1.Controls.Add(button43);
|
||||||
|
panel1.Controls.Add(button34);
|
||||||
|
panel1.Controls.Add(button35);
|
||||||
|
panel1.Controls.Add(button36);
|
||||||
|
panel1.Controls.Add(button37);
|
||||||
|
panel1.Controls.Add(button38);
|
||||||
|
panel1.Controls.Add(button23);
|
||||||
|
panel1.Controls.Add(button30);
|
||||||
|
panel1.Controls.Add(button31);
|
||||||
|
panel1.Controls.Add(button32);
|
||||||
|
panel1.Controls.Add(button33);
|
||||||
|
panel1.Controls.Add(InverseButton);
|
||||||
|
panel1.Controls.Add(MultButton);
|
||||||
|
panel1.Controls.Add(SixButton);
|
||||||
|
panel1.Controls.Add(FiveButton);
|
||||||
|
panel1.Controls.Add(FourButton);
|
||||||
|
panel1.Controls.Add(EqualButton);
|
||||||
|
panel1.Controls.Add(PlusButton);
|
||||||
|
panel1.Controls.Add(DotButton);
|
||||||
|
panel1.Controls.Add(ZeroButton);
|
||||||
|
panel1.Controls.Add(MinusButton);
|
||||||
|
panel1.Controls.Add(ThreeButton);
|
||||||
|
panel1.Controls.Add(TwoButton);
|
||||||
|
panel1.Controls.Add(OneButton);
|
||||||
|
panel1.Controls.Add(PercentButton);
|
||||||
|
panel1.Controls.Add(DivideButton);
|
||||||
|
panel1.Controls.Add(NineButton);
|
||||||
|
panel1.Controls.Add(EightButton);
|
||||||
|
panel1.Controls.Add(SevenButton);
|
||||||
|
panel1.Controls.Add(SqrtButton);
|
||||||
|
panel1.Controls.Add(NegativeButton);
|
||||||
|
panel1.Controls.Add(button8);
|
||||||
|
panel1.Controls.Add(CE_button);
|
||||||
|
panel1.Controls.Add(button10);
|
||||||
|
panel1.Controls.Add(button5);
|
||||||
|
panel1.Controls.Add(button4);
|
||||||
|
panel1.Controls.Add(button3);
|
||||||
|
panel1.Controls.Add(button2);
|
||||||
|
panel1.Controls.Add(button1);
|
||||||
|
panel1.Controls.Add(groupBox1);
|
||||||
|
panel1.Controls.Add(textBox1);
|
||||||
|
panel1.Location=new Point(16, 28);
|
||||||
|
panel1.Name="panel1";
|
||||||
|
panel1.Size=new Size(573, 338);
|
||||||
|
panel1.TabIndex=0;
|
||||||
|
//
|
||||||
|
// button49
|
||||||
|
//
|
||||||
|
button49.FlatStyle=FlatStyle.Flat;
|
||||||
|
button49.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button49.Location=new Point(232, 296);
|
||||||
|
button49.Name="button49";
|
||||||
|
button49.Size=new Size(51, 37);
|
||||||
|
button49.TabIndex=55;
|
||||||
|
button49.Text="10ᵜ";
|
||||||
|
button49.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button50
|
||||||
|
//
|
||||||
|
button50.FlatStyle=FlatStyle.Flat;
|
||||||
|
button50.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button50.Location=new Point(175, 296);
|
||||||
|
button50.Name="button50";
|
||||||
|
button50.Size=new Size(51, 37);
|
||||||
|
button50.TabIndex=54;
|
||||||
|
button50.Text="log";
|
||||||
|
button50.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button51
|
||||||
|
//
|
||||||
|
button51.FlatStyle=FlatStyle.Flat;
|
||||||
|
button51.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button51.Location=new Point(118, 296);
|
||||||
|
button51.Name="button51";
|
||||||
|
button51.Size=new Size(51, 37);
|
||||||
|
button51.TabIndex=53;
|
||||||
|
button51.Text="Mod";
|
||||||
|
button51.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button52
|
||||||
|
//
|
||||||
|
button52.FlatStyle=FlatStyle.Flat;
|
||||||
|
button52.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button52.Location=new Point(61, 296);
|
||||||
|
button52.Name="button52";
|
||||||
|
button52.Size=new Size(51, 37);
|
||||||
|
button52.TabIndex=52;
|
||||||
|
button52.Text="Exp";
|
||||||
|
button52.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button53
|
||||||
|
//
|
||||||
|
button53.FlatStyle=FlatStyle.Flat;
|
||||||
|
button53.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button53.Location=new Point(4, 296);
|
||||||
|
button53.Name="button53";
|
||||||
|
button53.Size=new Size(51, 37);
|
||||||
|
button53.TabIndex=51;
|
||||||
|
button53.Text="F-E";
|
||||||
|
button53.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button44
|
||||||
|
//
|
||||||
|
button44.FlatStyle=FlatStyle.Flat;
|
||||||
|
button44.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button44.Location=new Point(232, 253);
|
||||||
|
button44.Name="button44";
|
||||||
|
button44.Size=new Size(51, 37);
|
||||||
|
button44.TabIndex=50;
|
||||||
|
button44.Text="∛x";
|
||||||
|
button44.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button45
|
||||||
|
//
|
||||||
|
button45.FlatStyle=FlatStyle.Flat;
|
||||||
|
button45.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button45.Location=new Point(175, 253);
|
||||||
|
button45.Name="button45";
|
||||||
|
button45.Size=new Size(51, 37);
|
||||||
|
button45.TabIndex=49;
|
||||||
|
button45.Text="x³";
|
||||||
|
button45.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button46
|
||||||
|
//
|
||||||
|
button46.FlatStyle=FlatStyle.Flat;
|
||||||
|
button46.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button46.Location=new Point(118, 253);
|
||||||
|
button46.Name="button46";
|
||||||
|
button46.Size=new Size(51, 37);
|
||||||
|
button46.TabIndex=48;
|
||||||
|
button46.Text="tan";
|
||||||
|
button46.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button47
|
||||||
|
//
|
||||||
|
button47.FlatStyle=FlatStyle.Flat;
|
||||||
|
button47.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button47.Location=new Point(61, 253);
|
||||||
|
button47.Name="button47";
|
||||||
|
button47.Size=new Size(51, 37);
|
||||||
|
button47.TabIndex=47;
|
||||||
|
button47.Text="tanh";
|
||||||
|
button47.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button48
|
||||||
|
//
|
||||||
|
button48.FlatStyle=FlatStyle.Flat;
|
||||||
|
button48.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button48.Location=new Point(4, 253);
|
||||||
|
button48.Name="button48";
|
||||||
|
button48.Size=new Size(51, 37);
|
||||||
|
button48.TabIndex=46;
|
||||||
|
button48.Text="π";
|
||||||
|
button48.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button39
|
||||||
|
//
|
||||||
|
button39.FlatStyle=FlatStyle.Flat;
|
||||||
|
button39.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button39.Location=new Point(232, 210);
|
||||||
|
button39.Name="button39";
|
||||||
|
button39.Size=new Size(51, 37);
|
||||||
|
button39.TabIndex=45;
|
||||||
|
button39.Text="y√x";
|
||||||
|
button39.UseVisualStyleBackColor=true;
|
||||||
|
button39.Click+=button39_Click;
|
||||||
|
//
|
||||||
|
// button40
|
||||||
|
//
|
||||||
|
button40.FlatStyle=FlatStyle.Flat;
|
||||||
|
button40.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button40.Location=new Point(175, 210);
|
||||||
|
button40.Name="button40";
|
||||||
|
button40.Size=new Size(51, 37);
|
||||||
|
button40.TabIndex=44;
|
||||||
|
button40.Text="xᵜ";
|
||||||
|
button40.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button41
|
||||||
|
//
|
||||||
|
button41.FlatStyle=FlatStyle.Flat;
|
||||||
|
button41.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button41.Location=new Point(118, 210);
|
||||||
|
button41.Name="button41";
|
||||||
|
button41.Size=new Size(51, 37);
|
||||||
|
button41.TabIndex=43;
|
||||||
|
button41.Text="cos";
|
||||||
|
button41.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button42
|
||||||
|
//
|
||||||
|
button42.FlatStyle=FlatStyle.Flat;
|
||||||
|
button42.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button42.Location=new Point(61, 210);
|
||||||
|
button42.Name="button42";
|
||||||
|
button42.Size=new Size(51, 37);
|
||||||
|
button42.TabIndex=42;
|
||||||
|
button42.Text="cosh";
|
||||||
|
button42.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button43
|
||||||
|
//
|
||||||
|
button43.FlatStyle=FlatStyle.Flat;
|
||||||
|
button43.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button43.Location=new Point(4, 210);
|
||||||
|
button43.Name="button43";
|
||||||
|
button43.Size=new Size(51, 37);
|
||||||
|
button43.TabIndex=41;
|
||||||
|
button43.Text="dms";
|
||||||
|
button43.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button34
|
||||||
|
//
|
||||||
|
button34.FlatStyle=FlatStyle.Flat;
|
||||||
|
button34.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button34.Location=new Point(232, 167);
|
||||||
|
button34.Name="button34";
|
||||||
|
button34.Size=new Size(51, 37);
|
||||||
|
button34.TabIndex=40;
|
||||||
|
button34.Text="n!";
|
||||||
|
button34.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button35
|
||||||
|
//
|
||||||
|
button35.FlatStyle=FlatStyle.Flat;
|
||||||
|
button35.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button35.Location=new Point(175, 167);
|
||||||
|
button35.Name="button35";
|
||||||
|
button35.Size=new Size(51, 37);
|
||||||
|
button35.TabIndex=39;
|
||||||
|
button35.Text="Х²";
|
||||||
|
button35.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button36
|
||||||
|
//
|
||||||
|
button36.FlatStyle=FlatStyle.Flat;
|
||||||
|
button36.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button36.Location=new Point(118, 167);
|
||||||
|
button36.Name="button36";
|
||||||
|
button36.Size=new Size(51, 37);
|
||||||
|
button36.TabIndex=38;
|
||||||
|
button36.Text="sin";
|
||||||
|
button36.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button37
|
||||||
|
//
|
||||||
|
button37.FlatStyle=FlatStyle.Flat;
|
||||||
|
button37.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button37.Location=new Point(61, 167);
|
||||||
|
button37.Name="button37";
|
||||||
|
button37.Size=new Size(51, 37);
|
||||||
|
button37.TabIndex=37;
|
||||||
|
button37.Text="sinh";
|
||||||
|
button37.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button38
|
||||||
|
//
|
||||||
|
button38.FlatStyle=FlatStyle.Flat;
|
||||||
|
button38.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button38.Location=new Point(4, 167);
|
||||||
|
button38.Name="button38";
|
||||||
|
button38.Size=new Size(51, 37);
|
||||||
|
button38.TabIndex=36;
|
||||||
|
button38.Text="Int";
|
||||||
|
button38.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button23
|
||||||
|
//
|
||||||
|
button23.FlatStyle=FlatStyle.Flat;
|
||||||
|
button23.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button23.Location=new Point(232, 124);
|
||||||
|
button23.Name="button23";
|
||||||
|
button23.Size=new Size(51, 37);
|
||||||
|
button23.TabIndex=35;
|
||||||
|
button23.Text=")";
|
||||||
|
button23.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button30
|
||||||
|
//
|
||||||
|
button30.FlatStyle=FlatStyle.Flat;
|
||||||
|
button30.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button30.Location=new Point(175, 124);
|
||||||
|
button30.Name="button30";
|
||||||
|
button30.Size=new Size(51, 37);
|
||||||
|
button30.TabIndex=34;
|
||||||
|
button30.Text="(";
|
||||||
|
button30.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button31
|
||||||
|
//
|
||||||
|
button31.FlatStyle=FlatStyle.Flat;
|
||||||
|
button31.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button31.Location=new Point(118, 124);
|
||||||
|
button31.Name="button31";
|
||||||
|
button31.Size=new Size(51, 37);
|
||||||
|
button31.TabIndex=33;
|
||||||
|
button31.Text="In";
|
||||||
|
button31.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button32
|
||||||
|
//
|
||||||
|
button32.FlatStyle=FlatStyle.Flat;
|
||||||
|
button32.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button32.Location=new Point(61, 124);
|
||||||
|
button32.Name="button32";
|
||||||
|
button32.Size=new Size(51, 37);
|
||||||
|
button32.TabIndex=32;
|
||||||
|
button32.Text="Inv";
|
||||||
|
button32.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button33
|
||||||
|
//
|
||||||
|
button33.BackColor=Color.SlateBlue;
|
||||||
|
button33.BackgroundImageLayout=ImageLayout.None;
|
||||||
|
button33.Cursor=Cursors.No;
|
||||||
|
button33.Enabled=false;
|
||||||
|
button33.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button33.Location=new Point(4, 124);
|
||||||
|
button33.Name="button33";
|
||||||
|
button33.Size=new Size(51, 37);
|
||||||
|
button33.TabIndex=31;
|
||||||
|
button33.UseVisualStyleBackColor=false;
|
||||||
|
//
|
||||||
|
// InverseButton
|
||||||
|
//
|
||||||
|
InverseButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
InverseButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
InverseButton.Location=new Point(517, 210);
|
||||||
|
InverseButton.Name="InverseButton";
|
||||||
|
InverseButton.Size=new Size(51, 37);
|
||||||
|
InverseButton.TabIndex=30;
|
||||||
|
InverseButton.Text="1/x";
|
||||||
|
InverseButton.UseVisualStyleBackColor=true;
|
||||||
|
InverseButton.Click+=OnInverseButtonClick;
|
||||||
|
//
|
||||||
|
// MultButton
|
||||||
|
//
|
||||||
|
MultButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
MultButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
MultButton.Location=new Point(460, 210);
|
||||||
|
MultButton.Name="MultButton";
|
||||||
|
MultButton.Size=new Size(51, 37);
|
||||||
|
MultButton.TabIndex=29;
|
||||||
|
MultButton.Text="*";
|
||||||
|
MultButton.UseVisualStyleBackColor=true;
|
||||||
|
MultButton.Click+=OnMultButtonClick;
|
||||||
|
//
|
||||||
|
// SixButton
|
||||||
|
//
|
||||||
|
SixButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
SixButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
SixButton.Location=new Point(403, 210);
|
||||||
|
SixButton.Name="SixButton";
|
||||||
|
SixButton.Size=new Size(51, 37);
|
||||||
|
SixButton.TabIndex=28;
|
||||||
|
SixButton.Text="6";
|
||||||
|
SixButton.UseVisualStyleBackColor=true;
|
||||||
|
SixButton.Click+=OnSixButtonClick;
|
||||||
|
//
|
||||||
|
// FiveButton
|
||||||
|
//
|
||||||
|
FiveButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
FiveButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
FiveButton.Location=new Point(346, 210);
|
||||||
|
FiveButton.Name="FiveButton";
|
||||||
|
FiveButton.Size=new Size(51, 37);
|
||||||
|
FiveButton.TabIndex=27;
|
||||||
|
FiveButton.Text="5";
|
||||||
|
FiveButton.UseVisualStyleBackColor=true;
|
||||||
|
FiveButton.Click+=OnFiveButtonClick;
|
||||||
|
//
|
||||||
|
// FourButton
|
||||||
|
//
|
||||||
|
FourButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
FourButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
FourButton.Location=new Point(289, 210);
|
||||||
|
FourButton.Name="FourButton";
|
||||||
|
FourButton.Size=new Size(51, 37);
|
||||||
|
FourButton.TabIndex=26;
|
||||||
|
FourButton.Text="4";
|
||||||
|
FourButton.UseVisualStyleBackColor=true;
|
||||||
|
FourButton.Click+=OnFourButtonClick;
|
||||||
|
//
|
||||||
|
// EqualButton
|
||||||
|
//
|
||||||
|
EqualButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
EqualButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
EqualButton.Location=new Point(517, 253);
|
||||||
|
EqualButton.Name="EqualButton";
|
||||||
|
EqualButton.Size=new Size(51, 80);
|
||||||
|
EqualButton.TabIndex=25;
|
||||||
|
EqualButton.Text="=";
|
||||||
|
EqualButton.UseVisualStyleBackColor=true;
|
||||||
|
EqualButton.Click+=OnEqualButtonClick;
|
||||||
|
//
|
||||||
|
// PlusButton
|
||||||
|
//
|
||||||
|
PlusButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
PlusButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
PlusButton.Location=new Point(460, 296);
|
||||||
|
PlusButton.Name="PlusButton";
|
||||||
|
PlusButton.Size=new Size(51, 37);
|
||||||
|
PlusButton.TabIndex=24;
|
||||||
|
PlusButton.Text="+";
|
||||||
|
PlusButton.UseVisualStyleBackColor=true;
|
||||||
|
PlusButton.Click+=OnPlusButtonClick;
|
||||||
|
//
|
||||||
|
// DotButton
|
||||||
|
//
|
||||||
|
DotButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
DotButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
DotButton.Location=new Point(403, 296);
|
||||||
|
DotButton.Name="DotButton";
|
||||||
|
DotButton.Size=new Size(51, 37);
|
||||||
|
DotButton.TabIndex=23;
|
||||||
|
DotButton.Text=",";
|
||||||
|
DotButton.UseVisualStyleBackColor=true;
|
||||||
|
DotButton.Click+=OnDotButtonClick;
|
||||||
|
//
|
||||||
|
// ZeroButton
|
||||||
|
//
|
||||||
|
ZeroButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
ZeroButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
ZeroButton.Location=new Point(289, 296);
|
||||||
|
ZeroButton.Name="ZeroButton";
|
||||||
|
ZeroButton.Size=new Size(108, 37);
|
||||||
|
ZeroButton.TabIndex=22;
|
||||||
|
ZeroButton.Text="0";
|
||||||
|
ZeroButton.UseVisualStyleBackColor=true;
|
||||||
|
ZeroButton.Click+=OnZeroButtonClick;
|
||||||
|
//
|
||||||
|
// MinusButton
|
||||||
|
//
|
||||||
|
MinusButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
MinusButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
MinusButton.Location=new Point(460, 253);
|
||||||
|
MinusButton.Name="MinusButton";
|
||||||
|
MinusButton.Size=new Size(51, 37);
|
||||||
|
MinusButton.TabIndex=20;
|
||||||
|
MinusButton.Text="-";
|
||||||
|
MinusButton.UseVisualStyleBackColor=true;
|
||||||
|
MinusButton.Click+=OnMinusButtonClick;
|
||||||
|
//
|
||||||
|
// ThreeButton
|
||||||
|
//
|
||||||
|
ThreeButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
ThreeButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
ThreeButton.Location=new Point(403, 253);
|
||||||
|
ThreeButton.Name="ThreeButton";
|
||||||
|
ThreeButton.Size=new Size(51, 37);
|
||||||
|
ThreeButton.TabIndex=19;
|
||||||
|
ThreeButton.Text="3";
|
||||||
|
ThreeButton.UseVisualStyleBackColor=true;
|
||||||
|
ThreeButton.Click+=OnThreeButtonClick;
|
||||||
|
//
|
||||||
|
// TwoButton
|
||||||
|
//
|
||||||
|
TwoButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
TwoButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
TwoButton.Location=new Point(346, 253);
|
||||||
|
TwoButton.Name="TwoButton";
|
||||||
|
TwoButton.Size=new Size(51, 37);
|
||||||
|
TwoButton.TabIndex=18;
|
||||||
|
TwoButton.Text="2";
|
||||||
|
TwoButton.UseVisualStyleBackColor=true;
|
||||||
|
TwoButton.Click+=OnTwoButtonClick;
|
||||||
|
//
|
||||||
|
// OneButton
|
||||||
|
//
|
||||||
|
OneButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
OneButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
OneButton.Location=new Point(289, 253);
|
||||||
|
OneButton.Name="OneButton";
|
||||||
|
OneButton.Size=new Size(51, 37);
|
||||||
|
OneButton.TabIndex=17;
|
||||||
|
OneButton.Text="1";
|
||||||
|
OneButton.UseVisualStyleBackColor=true;
|
||||||
|
OneButton.Click+=OnOneButtonClick;
|
||||||
|
//
|
||||||
|
// PercentButton
|
||||||
|
//
|
||||||
|
PercentButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
PercentButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
PercentButton.Location=new Point(517, 167);
|
||||||
|
PercentButton.Name="PercentButton";
|
||||||
|
PercentButton.Size=new Size(51, 37);
|
||||||
|
PercentButton.TabIndex=16;
|
||||||
|
PercentButton.Text="%";
|
||||||
|
PercentButton.UseVisualStyleBackColor=true;
|
||||||
|
PercentButton.Click+=OnPercentButtonClick;
|
||||||
|
//
|
||||||
|
// DivideButton
|
||||||
|
//
|
||||||
|
DivideButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
DivideButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
DivideButton.Location=new Point(460, 167);
|
||||||
|
DivideButton.Name="DivideButton";
|
||||||
|
DivideButton.Size=new Size(51, 37);
|
||||||
|
DivideButton.TabIndex=15;
|
||||||
|
DivideButton.Text="/";
|
||||||
|
DivideButton.UseVisualStyleBackColor=true;
|
||||||
|
DivideButton.Click+=OnDivideButtonClick;
|
||||||
|
//
|
||||||
|
// NineButton
|
||||||
|
//
|
||||||
|
NineButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
NineButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
NineButton.Location=new Point(403, 167);
|
||||||
|
NineButton.Name="NineButton";
|
||||||
|
NineButton.Size=new Size(51, 37);
|
||||||
|
NineButton.TabIndex=14;
|
||||||
|
NineButton.Text="9";
|
||||||
|
NineButton.UseVisualStyleBackColor=true;
|
||||||
|
NineButton.Click+=OnNineButtonClick;
|
||||||
|
//
|
||||||
|
// EightButton
|
||||||
|
//
|
||||||
|
EightButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
EightButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
EightButton.Location=new Point(346, 167);
|
||||||
|
EightButton.Name="EightButton";
|
||||||
|
EightButton.Size=new Size(51, 37);
|
||||||
|
EightButton.TabIndex=13;
|
||||||
|
EightButton.Text="8";
|
||||||
|
EightButton.UseVisualStyleBackColor=true;
|
||||||
|
EightButton.Click+=OnEightButtonClick;
|
||||||
|
//
|
||||||
|
// SevenButton
|
||||||
|
//
|
||||||
|
SevenButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
SevenButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
SevenButton.Location=new Point(289, 167);
|
||||||
|
SevenButton.Name="SevenButton";
|
||||||
|
SevenButton.Size=new Size(51, 37);
|
||||||
|
SevenButton.TabIndex=12;
|
||||||
|
SevenButton.Text="7";
|
||||||
|
SevenButton.UseVisualStyleBackColor=true;
|
||||||
|
SevenButton.Click+=OnSevenButtonClick;
|
||||||
|
//
|
||||||
|
// SqrtButton
|
||||||
|
//
|
||||||
|
SqrtButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
SqrtButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
SqrtButton.Location=new Point(517, 124);
|
||||||
|
SqrtButton.Name="SqrtButton";
|
||||||
|
SqrtButton.Size=new Size(51, 37);
|
||||||
|
SqrtButton.TabIndex=11;
|
||||||
|
SqrtButton.Text="√";
|
||||||
|
SqrtButton.UseVisualStyleBackColor=true;
|
||||||
|
SqrtButton.Click+=OnSqrtButtonClick;
|
||||||
|
//
|
||||||
|
// NegativeButton
|
||||||
|
//
|
||||||
|
NegativeButton.FlatStyle=FlatStyle.Flat;
|
||||||
|
NegativeButton.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
NegativeButton.Location=new Point(460, 124);
|
||||||
|
NegativeButton.Name="NegativeButton";
|
||||||
|
NegativeButton.Size=new Size(51, 37);
|
||||||
|
NegativeButton.TabIndex=10;
|
||||||
|
NegativeButton.Text="±";
|
||||||
|
NegativeButton.UseVisualStyleBackColor=true;
|
||||||
|
NegativeButton.Click+=OnNegativeButtonClick;
|
||||||
|
//
|
||||||
|
// button8
|
||||||
|
//
|
||||||
|
button8.FlatStyle=FlatStyle.Flat;
|
||||||
|
button8.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button8.Location=new Point(403, 124);
|
||||||
|
button8.Name="button8";
|
||||||
|
button8.Size=new Size(51, 37);
|
||||||
|
button8.TabIndex=9;
|
||||||
|
button8.Text="C";
|
||||||
|
button8.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// CE_button
|
||||||
|
//
|
||||||
|
CE_button.FlatStyle=FlatStyle.Flat;
|
||||||
|
CE_button.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
CE_button.Location=new Point(346, 124);
|
||||||
|
CE_button.Name="CE_button";
|
||||||
|
CE_button.Size=new Size(51, 37);
|
||||||
|
CE_button.TabIndex=8;
|
||||||
|
CE_button.Text="CE";
|
||||||
|
CE_button.UseVisualStyleBackColor=true;
|
||||||
|
CE_button.Click+=OnCEButtonClick;
|
||||||
|
//
|
||||||
|
// button10
|
||||||
|
//
|
||||||
|
button10.FlatStyle=FlatStyle.Flat;
|
||||||
|
button10.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button10.Location=new Point(289, 124);
|
||||||
|
button10.Name="button10";
|
||||||
|
button10.Size=new Size(51, 37);
|
||||||
|
button10.TabIndex=7;
|
||||||
|
button10.Text="←";
|
||||||
|
button10.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button5
|
||||||
|
//
|
||||||
|
button5.FlatStyle=FlatStyle.Flat;
|
||||||
|
button5.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button5.Location=new Point(517, 81);
|
||||||
|
button5.Name="button5";
|
||||||
|
button5.Size=new Size(51, 37);
|
||||||
|
button5.TabIndex=6;
|
||||||
|
button5.Text="M-";
|
||||||
|
button5.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button4
|
||||||
|
//
|
||||||
|
button4.FlatStyle=FlatStyle.Flat;
|
||||||
|
button4.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button4.Location=new Point(460, 81);
|
||||||
|
button4.Name="button4";
|
||||||
|
button4.Size=new Size(51, 37);
|
||||||
|
button4.TabIndex=5;
|
||||||
|
button4.Text="M+";
|
||||||
|
button4.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button3
|
||||||
|
//
|
||||||
|
button3.FlatStyle=FlatStyle.Flat;
|
||||||
|
button3.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button3.Location=new Point(403, 81);
|
||||||
|
button3.Name="button3";
|
||||||
|
button3.Size=new Size(51, 37);
|
||||||
|
button3.TabIndex=4;
|
||||||
|
button3.Text="MS";
|
||||||
|
button3.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button2
|
||||||
|
//
|
||||||
|
button2.FlatStyle=FlatStyle.Flat;
|
||||||
|
button2.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button2.Location=new Point(346, 81);
|
||||||
|
button2.Name="button2";
|
||||||
|
button2.Size=new Size(51, 37);
|
||||||
|
button2.TabIndex=3;
|
||||||
|
button2.Text="MR";
|
||||||
|
button2.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// button1
|
||||||
|
//
|
||||||
|
button1.FlatStyle=FlatStyle.Flat;
|
||||||
|
button1.Font=new Font("Segoe UI", 9.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
button1.Location=new Point(289, 81);
|
||||||
|
button1.Name="button1";
|
||||||
|
button1.Size=new Size(51, 37);
|
||||||
|
button1.TabIndex=2;
|
||||||
|
button1.Text="MC";
|
||||||
|
button1.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// groupBox1
|
||||||
|
//
|
||||||
|
groupBox1.Controls.Add(radioButton3);
|
||||||
|
groupBox1.Controls.Add(radioButton2);
|
||||||
|
groupBox1.Controls.Add(radioButton1);
|
||||||
|
groupBox1.Location=new Point(4, 75);
|
||||||
|
groupBox1.Name="groupBox1";
|
||||||
|
groupBox1.Size=new Size(279, 43);
|
||||||
|
groupBox1.TabIndex=1;
|
||||||
|
groupBox1.TabStop=false;
|
||||||
|
//
|
||||||
|
// radioButton3
|
||||||
|
//
|
||||||
|
radioButton3.AutoSize=true;
|
||||||
|
radioButton3.Font=new Font("Roboto", 11.25F, FontStyle.Bold|FontStyle.Italic, GraphicsUnit.Point);
|
||||||
|
radioButton3.ForeColor=Color.FromArgb(255, 192, 255);
|
||||||
|
radioButton3.Location=new Point(197, 13);
|
||||||
|
radioButton3.Name="radioButton3";
|
||||||
|
radioButton3.Size=new Size(74, 22);
|
||||||
|
radioButton3.TabIndex=2;
|
||||||
|
radioButton3.TabStop=true;
|
||||||
|
radioButton3.Text="Грады";
|
||||||
|
radioButton3.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// radioButton2
|
||||||
|
//
|
||||||
|
radioButton2.AutoSize=true;
|
||||||
|
radioButton2.Font=new Font("Roboto", 11.25F, FontStyle.Bold|FontStyle.Italic, GraphicsUnit.Point);
|
||||||
|
radioButton2.ForeColor=Color.FromArgb(255, 192, 255);
|
||||||
|
radioButton2.Location=new Point(98, 13);
|
||||||
|
radioButton2.Name="radioButton2";
|
||||||
|
radioButton2.Size=new Size(97, 22);
|
||||||
|
radioButton2.TabIndex=1;
|
||||||
|
radioButton2.TabStop=true;
|
||||||
|
radioButton2.Text="Радианы";
|
||||||
|
radioButton2.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// radioButton1
|
||||||
|
//
|
||||||
|
radioButton1.AutoSize=true;
|
||||||
|
radioButton1.Font=new Font("Roboto", 11.25F, FontStyle.Bold|FontStyle.Italic, GraphicsUnit.Point);
|
||||||
|
radioButton1.ForeColor=Color.FromArgb(255, 192, 255);
|
||||||
|
radioButton1.Location=new Point(6, 13);
|
||||||
|
radioButton1.Name="radioButton1";
|
||||||
|
radioButton1.Size=new Size(91, 22);
|
||||||
|
radioButton1.TabIndex=0;
|
||||||
|
radioButton1.TabStop=true;
|
||||||
|
radioButton1.Text="Градусы";
|
||||||
|
radioButton1.UseVisualStyleBackColor=true;
|
||||||
|
//
|
||||||
|
// textBox1
|
||||||
|
//
|
||||||
|
textBox1.BackColor=Color.FromArgb(192, 192, 255);
|
||||||
|
textBox1.Cursor=Cursors.No;
|
||||||
|
textBox1.Enabled=false;
|
||||||
|
textBox1.Font=new Font("Myanmar Text", 27.75F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
textBox1.ForeColor=Color.FromArgb(255, 192, 255);
|
||||||
|
textBox1.Location=new Point(3, 3);
|
||||||
|
textBox1.Multiline=true;
|
||||||
|
textBox1.Name="textBox1";
|
||||||
|
textBox1.Size=new Size(567, 72);
|
||||||
|
textBox1.TabIndex=0;
|
||||||
|
//
|
||||||
|
// linkLabel1
|
||||||
|
//
|
||||||
|
linkLabel1.AutoSize=true;
|
||||||
|
linkLabel1.LinkColor=Color.FromArgb(255, 192, 255);
|
||||||
|
linkLabel1.Location=new Point(16, 6);
|
||||||
|
linkLabel1.Name="linkLabel1";
|
||||||
|
linkLabel1.Size=new Size(27, 15);
|
||||||
|
linkLabel1.TabIndex=1;
|
||||||
|
linkLabel1.TabStop=true;
|
||||||
|
linkLabel1.Text="Вид";
|
||||||
|
//
|
||||||
|
// linkLabel2
|
||||||
|
//
|
||||||
|
linkLabel2.AutoSize=true;
|
||||||
|
linkLabel2.LinkColor=Color.FromArgb(255, 192, 255);
|
||||||
|
linkLabel2.Location=new Point(49, 6);
|
||||||
|
linkLabel2.Name="linkLabel2";
|
||||||
|
linkLabel2.Size=new Size(47, 15);
|
||||||
|
linkLabel2.TabIndex=2;
|
||||||
|
linkLabel2.TabStop=true;
|
||||||
|
linkLabel2.Text="Правка";
|
||||||
|
//
|
||||||
|
// linkLabel3
|
||||||
|
//
|
||||||
|
linkLabel3.AutoSize=true;
|
||||||
|
linkLabel3.LinkColor=Color.FromArgb(255, 192, 255);
|
||||||
|
linkLabel3.Location=new Point(102, 6);
|
||||||
|
linkLabel3.Name="linkLabel3";
|
||||||
|
linkLabel3.Size=new Size(53, 15);
|
||||||
|
linkLabel3.TabIndex=3;
|
||||||
|
linkLabel3.TabStop=true;
|
||||||
|
linkLabel3.Text="Справка";
|
||||||
|
//
|
||||||
|
// Form1
|
||||||
|
//
|
||||||
|
AutoScaleDimensions=new SizeF(7F, 15F);
|
||||||
|
AutoScaleMode=AutoScaleMode.Font;
|
||||||
|
BackColor=Color.Indigo;
|
||||||
|
ClientSize=new Size(607, 378);
|
||||||
|
Controls.Add(linkLabel3);
|
||||||
|
Controls.Add(linkLabel2);
|
||||||
|
Controls.Add(linkLabel1);
|
||||||
|
Controls.Add(panel1);
|
||||||
|
Name="Form1";
|
||||||
|
Text="Form1";
|
||||||
|
panel1.ResumeLayout(false);
|
||||||
|
panel1.PerformLayout();
|
||||||
|
groupBox1.ResumeLayout(false);
|
||||||
|
groupBox1.PerformLayout();
|
||||||
|
ResumeLayout(false);
|
||||||
|
PerformLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private Panel panel1;
|
||||||
|
private Button button5;
|
||||||
|
private Button button4;
|
||||||
|
private Button button3;
|
||||||
|
private Button button2;
|
||||||
|
private Button button1;
|
||||||
|
private GroupBox groupBox1;
|
||||||
|
private RadioButton radioButton3;
|
||||||
|
private RadioButton radioButton2;
|
||||||
|
private RadioButton radioButton1;
|
||||||
|
private TextBox textBox1;
|
||||||
|
private LinkLabel linkLabel1;
|
||||||
|
private LinkLabel linkLabel2;
|
||||||
|
private LinkLabel linkLabel3;
|
||||||
|
private Button button49;
|
||||||
|
private Button button50;
|
||||||
|
private Button button51;
|
||||||
|
private Button button52;
|
||||||
|
private Button button53;
|
||||||
|
private Button button44;
|
||||||
|
private Button button45;
|
||||||
|
private Button button46;
|
||||||
|
private Button button47;
|
||||||
|
private Button button48;
|
||||||
|
private Button button39;
|
||||||
|
private Button button40;
|
||||||
|
private Button button41;
|
||||||
|
private Button button42;
|
||||||
|
private Button button43;
|
||||||
|
private Button button34;
|
||||||
|
private Button button35;
|
||||||
|
private Button button36;
|
||||||
|
private Button button37;
|
||||||
|
private Button button38;
|
||||||
|
private Button button23;
|
||||||
|
private Button button30;
|
||||||
|
private Button button31;
|
||||||
|
private Button button32;
|
||||||
|
private Button button33;
|
||||||
|
private Button InverseButton;
|
||||||
|
private Button MultButton;
|
||||||
|
private Button SixButton;
|
||||||
|
private Button FiveButton;
|
||||||
|
private Button FourButton;
|
||||||
|
private Button EqualButton;
|
||||||
|
private Button PlusButton;
|
||||||
|
private Button DotButton;
|
||||||
|
private Button ZeroButton;
|
||||||
|
private Button MinusButton;
|
||||||
|
private Button ThreeButton;
|
||||||
|
private Button TwoButton;
|
||||||
|
private Button OneButton;
|
||||||
|
private Button PercentButton;
|
||||||
|
private Button DivideButton;
|
||||||
|
private Button NineButton;
|
||||||
|
private Button EightButton;
|
||||||
|
private Button SevenButton;
|
||||||
|
private Button SqrtButton;
|
||||||
|
private Button NegativeButton;
|
||||||
|
private Button button8;
|
||||||
|
private Button CE_button;
|
||||||
|
private Button button10;
|
||||||
|
}
|
||||||
|
}
|
||||||
133
Form1.cs
Normal file
133
Form1.cs
Normal file
|
|
@ -0,0 +1,133 @@
|
||||||
|
using calculator.View;
|
||||||
|
|
||||||
|
namespace calculator
|
||||||
|
{
|
||||||
|
public partial class Form1 : Form, ICaculatorView
|
||||||
|
{
|
||||||
|
public Form1()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
public event Action<char>? OperandPressed;
|
||||||
|
public event Action<string>? OperatorPressed;
|
||||||
|
public event Action<string>? SingleOperatorPressed;
|
||||||
|
public event Action? ClearPressed;
|
||||||
|
public event Action? CalculatePressed;
|
||||||
|
|
||||||
|
public void UpdateView(string input)
|
||||||
|
{
|
||||||
|
textBox1.Text = input;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnCEButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ClearPressed?.Invoke();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnZeroButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OperandPressed?.Invoke('0');
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnOneButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OperandPressed?.Invoke('1');
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnTwoButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OperandPressed?.Invoke('2');
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnThreeButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OperandPressed?.Invoke('3');
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnFourButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OperandPressed?.Invoke('4');
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnFiveButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OperandPressed?.Invoke('5');
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnSixButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OperandPressed?.Invoke('6');
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnSevenButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OperandPressed?.Invoke('7');
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnEightButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OperandPressed?.Invoke('8');
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnNineButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OperandPressed?.Invoke('9');
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDotButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OperandPressed?.Invoke('.');
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnNegativeButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SingleOperatorPressed?.Invoke("-1");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnPlusButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OperatorPressed?.Invoke("+");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnMinusButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OperatorPressed?.Invoke("-");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnMultButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OperatorPressed?.Invoke("*");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDivideButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OperatorPressed?.Invoke("/");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnSqrtButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SingleOperatorPressed?.Invoke("√");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnPercentButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SingleOperatorPressed?.Invoke("%");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnInverseButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SingleOperatorPressed?.Invoke("1/");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnEqualButtonClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
CalculatePressed?.Invoke();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void button39_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
306
Form1.resx
Normal file
306
Form1.resx
Normal file
|
|
@ -0,0 +1,306 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<metadata name="panel1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button49.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button50.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button51.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button52.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button53.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button44.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button45.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button46.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button47.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button48.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button39.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button40.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button41.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button42.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button43.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button34.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button35.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button36.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button37.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button38.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button23.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button30.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button31.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button32.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button33.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="InverseButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="MultButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="SixButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="FiveButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="FourButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="EqualButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="PlusButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="DotButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="ZeroButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="MinusButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="ThreeButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="TwoButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="OneButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="PercentButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="DivideButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="NineButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="EightButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="SevenButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="SqrtButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="NegativeButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button8.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="CE_button.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button10.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button5.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button4.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button3.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="groupBox1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="radioButton3.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="radioButton2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="radioButton1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="linkLabel1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="linkLabel2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="linkLabel3.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
</root>
|
||||||
3
GlobalUsings.cs
Normal file
3
GlobalUsings.cs
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
// Global using directives
|
||||||
|
|
||||||
|
global using System.Collections.Generic;
|
||||||
10
Model/CaculatorData.cs
Normal file
10
Model/CaculatorData.cs
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
namespace calculator.Model;
|
||||||
|
|
||||||
|
public class CaculatorData
|
||||||
|
{
|
||||||
|
public Stack<string> Operands { get; set; } = new();
|
||||||
|
public string? Operation { get; set; }
|
||||||
|
public string? SingleOperation { get; set; }
|
||||||
|
public bool Caculated { get; set; }
|
||||||
|
public string? LastOperand { get; set; }
|
||||||
|
}
|
||||||
26
Program.cs
Normal file
26
Program.cs
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
using calculator.Controller;
|
||||||
|
using calculator.Model;
|
||||||
|
using calculator.Services;
|
||||||
|
|
||||||
|
namespace calculator
|
||||||
|
{
|
||||||
|
internal static class Program
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The main entry point for the application.
|
||||||
|
/// </summary>
|
||||||
|
[STAThread]
|
||||||
|
static void Main()
|
||||||
|
{
|
||||||
|
// To customize application configuration such as set high DPI settings or default font,
|
||||||
|
// see https://aka.ms/applicationconfiguration.
|
||||||
|
var inputService = new InputService();
|
||||||
|
var caculator = new Caculyator();
|
||||||
|
ApplicationConfiguration.Initialize();
|
||||||
|
var data = new CaculatorData();
|
||||||
|
var view = new Form1();
|
||||||
|
var controller = new CaculatorController(caculator, inputService, view, data);
|
||||||
|
Application.Run(view);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
63
Properties/Resources.Designer.cs
generated
Normal file
63
Properties/Resources.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// Этот код создан программой.
|
||||||
|
// Исполняемая версия:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
|
||||||
|
// повторной генерации кода.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace calculator.Properties {
|
||||||
|
using System;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
|
||||||
|
/// </summary>
|
||||||
|
// Этот класс создан автоматически классом StronglyTypedResourceBuilder
|
||||||
|
// с помощью такого средства, как ResGen или Visual Studio.
|
||||||
|
// Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
|
||||||
|
// с параметром /str или перестройте свой проект VS.
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
internal class Resources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal Resources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||||
|
get {
|
||||||
|
if (object.ReferenceEquals(resourceMan, null)) {
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("calculator.Properties.Resources", typeof(Resources).Assembly);
|
||||||
|
resourceMan = temp;
|
||||||
|
}
|
||||||
|
return resourceMan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Перезаписывает свойство CurrentUICulture текущего потока для всех
|
||||||
|
/// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Globalization.CultureInfo Culture {
|
||||||
|
get {
|
||||||
|
return resourceCulture;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
resourceCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
120
Properties/Resources.resx
Normal file
120
Properties/Resources.resx
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
60
Services/Caculyator.cs
Normal file
60
Services/Caculyator.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
using System.Globalization;
|
||||||
|
|
||||||
|
namespace calculator.Services
|
||||||
|
{
|
||||||
|
internal class Caculyator : ICaculator
|
||||||
|
{
|
||||||
|
public string Calculate(string n, string m, string operation)
|
||||||
|
{
|
||||||
|
if (double.TryParse(n, out var numberone) == false)
|
||||||
|
return string.Empty;
|
||||||
|
if (double.TryParse(m, out var numbertwo) == false)
|
||||||
|
return string.Empty;
|
||||||
|
|
||||||
|
return ApplyOperator(operation, numberone, numbertwo).ToString("0.#####");
|
||||||
|
}
|
||||||
|
|
||||||
|
public string SingleOperation(string operand, string operation)
|
||||||
|
{
|
||||||
|
if (double.TryParse(operand, out var numberone) == false)
|
||||||
|
return string.Empty;
|
||||||
|
return ApplyOperator(operation, numberone).ToString("0.#####");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static double ApplyOperator(string token, double operand1, double operand2)
|
||||||
|
{
|
||||||
|
switch (token)
|
||||||
|
{
|
||||||
|
case "+":
|
||||||
|
return operand1 + operand2;
|
||||||
|
case "-":
|
||||||
|
return operand1 - operand2;
|
||||||
|
case "*":
|
||||||
|
return operand1 * operand2;
|
||||||
|
case "/":
|
||||||
|
return operand1 / operand2;
|
||||||
|
case "^":
|
||||||
|
return Math.Pow(operand1, operand2);
|
||||||
|
default:
|
||||||
|
throw new ArgumentException($"Invalid operator: {token}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static double ApplyOperator(string token, double operand1)
|
||||||
|
{
|
||||||
|
switch (token)
|
||||||
|
{
|
||||||
|
case "1/":
|
||||||
|
return 1 / operand1;
|
||||||
|
case "√":
|
||||||
|
return Math.Sqrt(operand1);
|
||||||
|
case "%":
|
||||||
|
return operand1 / 100;
|
||||||
|
case "-1":
|
||||||
|
return operand1 * -1;
|
||||||
|
default:
|
||||||
|
throw new ArgumentException($"Invalid operator: {token}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
7
Services/ICaculator.cs
Normal file
7
Services/ICaculator.cs
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
namespace calculator.Services;
|
||||||
|
|
||||||
|
public interface ICaculator
|
||||||
|
{
|
||||||
|
string Calculate(string op1, string op2, string operation);
|
||||||
|
string SingleOperation(string operand, string operation);
|
||||||
|
}
|
||||||
7
Services/IInputService.cs
Normal file
7
Services/IInputService.cs
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
namespace calculator.Services
|
||||||
|
{
|
||||||
|
public interface IInputService
|
||||||
|
{
|
||||||
|
public string TryInput(string input);
|
||||||
|
}
|
||||||
|
}
|
||||||
23
Services/InputService.cs
Normal file
23
Services/InputService.cs
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
namespace calculator.Services
|
||||||
|
{
|
||||||
|
internal class InputService : IInputService
|
||||||
|
{
|
||||||
|
public string TryInput(string input)
|
||||||
|
{
|
||||||
|
//если есть знак "бесконечность" - не даёт писать цифры после него
|
||||||
|
if (input.Contains('∞'))
|
||||||
|
{
|
||||||
|
input = input[..^1];
|
||||||
|
}
|
||||||
|
|
||||||
|
//ситуация: слева ноль, а после него НЕ запятая, тогда ноль можно удалить
|
||||||
|
if (input[0] == '0' && (input.IndexOf(".", StringComparison.Ordinal) != 1))
|
||||||
|
{
|
||||||
|
input = input.Remove(0, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return input;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
11
View/ICaculatorView.cs
Normal file
11
View/ICaculatorView.cs
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
namespace calculator.View;
|
||||||
|
|
||||||
|
public interface ICaculatorView
|
||||||
|
{
|
||||||
|
public event Action<char> OperandPressed;
|
||||||
|
public event Action<string> OperatorPressed;
|
||||||
|
public event Action<string> SingleOperatorPressed;
|
||||||
|
public event Action ClearPressed;
|
||||||
|
public event Action CalculatePressed;
|
||||||
|
public void UpdateView(string input);
|
||||||
|
}
|
||||||
26
calculator.csproj
Normal file
26
calculator.csproj
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<TargetFramework>net6.0-windows</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<UseWindowsForms>true</UseWindowsForms>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Update="Properties\Resources.Designer.cs">
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Update="Properties\Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
</EmbeddedResource>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
25
calculator.sln
Normal file
25
calculator.sln
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.5.33516.290
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "calculator", "calculator.csproj", "{FC5416F2-1AED-4C75-A82D-60774657A984}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{FC5416F2-1AED-4C75-A82D-60774657A984}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{FC5416F2-1AED-4C75-A82D-60774657A984}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{FC5416F2-1AED-4C75-A82D-60774657A984}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{FC5416F2-1AED-4C75-A82D-60774657A984}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {4631776A-E30A-4C14-947E-859DF03FE2B7}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
Loading…
Add table
Add a link
Reference in a new issue