From 869dc25fb43af7bf231e83cc9aac94ffc1e51985 Mon Sep 17 00:00:00 2001 From: Alexander Babaev Date: Sat, 13 Nov 2021 15:39:16 +0300 Subject: [PATCH] 20211113 C#10 Update --- anbs_cp/CountFormatter.cs | 63 ++++---- anbs_cp/FileSizeFormatter.cs | 101 +++++++------ anbs_cp/IValueFormatter.cs | 131 ++++++++--------- anbs_cp/LikeDelphi.cs | 76 +++++----- anbs_cp/TypeConverter.cs | 217 ++++++++++++++-------------- anbs_cp/anbs_cp.csproj | 6 +- demo/CountValueTest.Designer.cs | 245 ++++++++++++++++---------------- demo/CountValueTest.cs | 60 ++++---- demo/Program.cs | 21 ++- 9 files changed, 448 insertions(+), 472 deletions(-) diff --git a/anbs_cp/CountFormatter.cs b/anbs_cp/CountFormatter.cs index 05bba3a..569e748 100644 --- a/anbs_cp/CountFormatter.cs +++ b/anbs_cp/CountFormatter.cs @@ -1,34 +1,33 @@ -namespace anbs_cp -{ - /// - /// Форматирует число элементов в понятную строку - /// - public class CountFormatter : IValueFormatter - { - #region Cвойства класса - /// - /// Имена чисел (тысяч, миллионов, миллиардов и т.п.) - /// - public string[] CountNames { get; set; } = { "", "тыс.", "млн.", "млрд." }; - /// - /// Знаков после запятой - /// - public byte DecimalPlaces { get; set; } = 1; - /// - /// Делители чисел - /// - public long[] Delimeters { get; set; } = { 1000, 1000000, 1000000000 }; - #endregion +namespace anbs_cp; - #region Реализация интерфейса - /// - /// Реализация интерфейса - /// - public string[] ValueNames { get => CountNames; set => CountNames = value; } - /// - /// Реализация интерфейса - /// - public long[] MaxSizes { get => Delimeters; set => Delimeters = value; } - #endregion - } +/// +/// Форматирует число элементов в понятную строку +/// +public class CountFormatter: IValueFormatter +{ + #region Cвойства класса + /// + /// Имена чисел (тысяч, миллионов, миллиардов и т.п.) + /// + public string[] CountNames { get; set; } = { "", "тыс.", "млн.", "млрд." }; + /// + /// Знаков после запятой + /// + public byte DecimalPlaces { get; set; } = 1; + /// + /// Делители чисел + /// + public long[] Delimeters { get; set; } = { 1000, 1000000, 1000000000 }; + #endregion + + #region Реализация интерфейса + /// + /// Реализация интерфейса + /// + public string[] ValueNames { get => CountNames; set => CountNames = value; } + /// + /// Реализация интерфейса + /// + public long[] MaxSizes { get => Delimeters; set => Delimeters = value; } + #endregion } \ No newline at end of file diff --git a/anbs_cp/FileSizeFormatter.cs b/anbs_cp/FileSizeFormatter.cs index a4cbd33..d7bc608 100644 --- a/anbs_cp/FileSizeFormatter.cs +++ b/anbs_cp/FileSizeFormatter.cs @@ -1,56 +1,55 @@ -namespace anbs_cp -{ - /// - /// Форматирует размер файла/папки в понятную строку - /// - public class FileSizeFormatter : IValueFormatter - { - #region Cвойства класса - /// - /// Имена размеров (байт, килобайт, мегабайт, гигабайт и террабайт) - /// - public string[] SizeNames { get; set; } = { "Байт", "Кб", "Мб", "Гб", "Тб" }; - /// - /// Знаков после запятой - /// - public byte DecimalPlaces { get; set; } = 2; - /// - /// Максимально байт (далее идут Кбайты) - /// - public long ByteMax { get; set; } = 1024; - /// - /// Максимально Кбайт (далее идут Мбайты) - /// - public long KByteMax { get; set; } = 1048576; - /// - /// Максимально Мбайт (далее идут Гбайты) - /// - public long MByteMax { get; set; } = 1073741824; - /// - /// Максимально Гбайт (далее идут Тбайты) - /// - public long GByteMax { get; set; } = 1099511627776; - #endregion +namespace anbs_cp; - #region Реализация интерфейса - /// - /// Реализация интерфейса - /// - public string[] ValueNames { get => SizeNames; set => SizeNames = value; } - /// - /// Реализация интерфейса - /// - public long[] MaxSizes +/// +/// Форматирует размер файла/папки в понятную строку +/// +public class FileSizeFormatter: IValueFormatter +{ + #region Cвойства класса + /// + /// Имена размеров (байт, килобайт, мегабайт, гигабайт и террабайт) + /// + public string[] SizeNames { get; set; } = { "Байт", "Кб", "Мб", "Гб", "Тб" }; + /// + /// Знаков после запятой + /// + public byte DecimalPlaces { get; set; } = 2; + /// + /// Максимально байт (далее идут Кбайты) + /// + public long ByteMax { get; set; } = 1024; + /// + /// Максимально Кбайт (далее идут Мбайты) + /// + public long KByteMax { get; set; } = 1048576; + /// + /// Максимально Мбайт (далее идут Гбайты) + /// + public long MByteMax { get; set; } = 1073741824; + /// + /// Максимально Гбайт (далее идут Тбайты) + /// + public long GByteMax { get; set; } = 1099511627776; + #endregion + + #region Реализация интерфейса + /// + /// Реализация интерфейса + /// + public string[] ValueNames { get => SizeNames; set => SizeNames = value; } + /// + /// Реализация интерфейса + /// + public long[] MaxSizes + { + get => new long[] { ByteMax, KByteMax, MByteMax, GByteMax }; + set { - get => new long[] { ByteMax, KByteMax, MByteMax, GByteMax }; - set - { - ByteMax = value[0]; - KByteMax = value[1]; - MByteMax = value[2]; - GByteMax = value[3]; - } + ByteMax = value[0]; + KByteMax = value[1]; + MByteMax = value[2]; + GByteMax = value[3]; } - #endregion } + #endregion } \ No newline at end of file diff --git a/anbs_cp/IValueFormatter.cs b/anbs_cp/IValueFormatter.cs index 36e0d3b..ec2cd98 100644 --- a/anbs_cp/IValueFormatter.cs +++ b/anbs_cp/IValueFormatter.cs @@ -1,82 +1,75 @@ -namespace anbs_cp +namespace anbs_cp; + +/// +/// Форматирует размерности в понятную строку +/// +public interface IValueFormatter { + + #region Определения интерфейса /// - /// Форматирует размерности в понятную строку + /// Имена размерностей /// - public interface IValueFormatter + public string[] ValueNames { get; set; } + /// + /// Знаков после запятой + /// + public byte DecimalPlaces { get; set; } + /// + /// Максимальные размеры (массив ulong[4]) + /// + public long[] MaxSizes { get; set; } + #endregion + + #region Методы интерфейса + /// + /// Форматирование размерности + /// + /// Размерность, требующая форматирования + /// Форматированная размерность (например, 20 Мб) + public string Format (long value) { + //Левая граница + long leftnum; + //Правая граница + long rightnum; - #region Определения интерфейса - /// - /// Имена размерностей - /// - public string[] ValueNames { get; set; } - /// - /// Знаков после запятой - /// - public byte DecimalPlaces { get; set; } - /// - /// Максимальные размеры (массив ulong[4]) - /// - public long[] MaxSizes { get; set; } - #endregion - - #region Методы интерфейса - /// - /// Форматирование размерности - /// - /// Размерность, требующая форматирования - /// Форматированная размерность (например, 20 Мб) - public string Format(long value) + for (int i = 0; i <= MaxSizes.Length; i++) { - //Левая граница - long leftnum; - //Правая граница - long rightnum; + leftnum = i == 0 ? 0 : MaxSizes[i - 1]; - for (int i = 0; i <= MaxSizes.Length; i++) - { - if (i == 0) - leftnum = 0; - else - leftnum = MaxSizes[i - 1]; + rightnum = i == MaxSizes.Length ? long.MaxValue : MaxSizes[i]; - if (i == MaxSizes.Length) - rightnum = long.MaxValue; - else - rightnum = MaxSizes[i]; + if ((value >= leftnum) && (value < rightnum)) + return $"{FormatValue(value, leftnum)} {ValueNames[i]}"; - if ((value >= leftnum) && (value < rightnum)) - return $"{FormatValue(value, leftnum)} {ValueNames[i]}"; - - } - - return value.ToString(); } - /// - /// Деление числа на число с DecimalPlaces знаками после запятой - /// - /// Делимое число - /// Число-делитель - /// Частное (с DecimalPlaces знаками после запятой) - private string FormatValue(long dividend, long divider) - { - if (divider == 0) - { - return $"{dividend}"; - } - long delim = 1; - - for (int i = 0; i <= DecimalPlaces; i++) - { - delim *= 10; - } - - decimal value = Math.Round((decimal)(dividend * delim / divider)) / delim; - - return $"{value}"; - } - #endregion + return value.ToString(); } + /// + /// Деление числа на число с DecimalPlaces знаками после запятой + /// + /// Делимое число + /// Число-делитель + /// Частное (с DecimalPlaces знаками после запятой) + private string FormatValue (long dividend, long divider) + { + if (divider == 0) + { + return $"{dividend}"; + } + + long delim = 1; + + for (int i = 0; i <= DecimalPlaces; i++) + { + delim *= 10; + } + + decimal value = Math.Round((decimal)(dividend * delim / divider)) / delim; + + return $"{value}"; + } + #endregion } \ No newline at end of file diff --git a/anbs_cp/LikeDelphi.cs b/anbs_cp/LikeDelphi.cs index bf6831d..59d694b 100644 --- a/anbs_cp/LikeDelphi.cs +++ b/anbs_cp/LikeDelphi.cs @@ -1,48 +1,46 @@ -using System.Collections.Generic; -namespace anbs_cp +namespace anbs_cp; + +/// +/// Класс, добавляющий реализацию некоторых методов Delphi, которые упрощают работу в C#. +/// +public static class LikeDelphi { /// - /// Класс, добавляющий реализацию некоторых методов Delphi, которые упрощают работу в C#. + /// Аналог функции IncludeTrailingBackslash /// - public static class LikeDelphi + /// Путь, к которому нужно добавить slash + /// Путь со slash в конце + public static string IncludeTrailingBackslash (string path) { - /// - /// Аналог функции IncludeTrailingBackslash - /// - /// Путь, к которому нужно добавить slash - /// Путь со slash в конце - public static string IncludeTrailingBackslash(string path) + string result = path; + int Index = path.Length - 1; + if (path[Index] != '\\') { - string result = path; - int Index = path.Length - 1; - if (path[Index] != '\\') - { - result = $"{path}\\"; - } - return result; + result = $"{path}\\"; } - /// - /// Парсер строки в множество строк - /// - /// Строка, которую нужно разбить - /// Символ-делитель строки - /// Массив строк - public static List ParseString(string astring, char delim) + return result; + } + /// + /// Парсер строки в множество строк + /// + /// Строка, которую нужно разбить + /// Символ-делитель строки + /// Массив строк + public static List ParseString (string astring, char delim) + { + int from = -1; + int to; + List result = new(); + do { - int from = -1; - int to; - List result = new(); - do - { - from++; - to = astring.IndexOf(delim, from); - if (to <= 0) - to = astring.Length; - if (from != to) - result.Add(astring[from..(to-from)]); - from = to; - } while (to != astring.Length); - return result; - } + from++; + to = astring.IndexOf(delim, from); + if (to <= 0) + to = astring.Length; + if (from != to) + result.Add(astring[from..(to - from)]); + from = to; + } while (to != astring.Length); + return result; } } \ No newline at end of file diff --git a/anbs_cp/TypeConverter.cs b/anbs_cp/TypeConverter.cs index 3ab4951..5542364 100644 --- a/anbs_cp/TypeConverter.cs +++ b/anbs_cp/TypeConverter.cs @@ -1,114 +1,113 @@ -namespace anbs_cp -{ - /// - /// Конвертер типов на манер Delphi - /// - public static class TypeConverter - { - #region Конвертация числа в строку - /// - /// Преобразование int в string - /// - /// Число - /// Строка - public static string IntToStr(int AInt) => AInt.ToString(); - /// - /// Преобразование uint в string - /// - /// Число - /// Строка - public static string IntToStr(uint AInt) => AInt.ToString(); - /// - /// Преобразование long в string - /// - /// Число - /// Строка - public static string IntToStr(long AInt) => AInt.ToString(); - /// - /// Преобразование ulong в string - /// - /// Число - /// Строка - public static string IntToStr(ulong AInt) => AInt.ToString(); - /// - /// Преобразование byte в string - /// - /// Число - /// Строка - public static string IntToStr(byte AInt) => AInt.ToString(); - #endregion +namespace anbs_cp; - #region Конвертация строки в число - /// - /// Преобразование строки в число - /// - /// Строка - /// Значение по умолчанию (по умолчанию, 0) - /// Число - public static int StrToInt(string AStr, int ADefault = 0) +/// +/// Конвертер типов на манер Delphi +/// +public static class TypeConverter +{ + #region Конвертация числа в строку + /// + /// Преобразование int в string + /// + /// Число + /// Строка + public static string IntToStr (int AInt) => AInt.ToString(); + /// + /// Преобразование uint в string + /// + /// Число + /// Строка + public static string IntToStr (uint AInt) => AInt.ToString(); + /// + /// Преобразование long в string + /// + /// Число + /// Строка + public static string IntToStr (long AInt) => AInt.ToString(); + /// + /// Преобразование ulong в string + /// + /// Число + /// Строка + public static string IntToStr (ulong AInt) => AInt.ToString(); + /// + /// Преобразование byte в string + /// + /// Число + /// Строка + public static string IntToStr (byte AInt) => AInt.ToString(); + #endregion + + #region Конвертация строки в число + /// + /// Преобразование строки в число + /// + /// Строка + /// Значение по умолчанию (по умолчанию, 0) + /// Число + public static int StrToInt (string AStr, int ADefault = 0) + { + if (!int.TryParse(AStr, out int result)) { - if (!int.TryParse(AStr, out int result)) - { - result = ADefault; - } - return result; + result = ADefault; } - /// - /// Преобразование строки в число - /// - /// Строка - /// Значение по умолчанию (по умолчанию, 0) - /// Число - public static uint StrToUInt(string AStr, uint ADefault = 0) - { - if (!uint.TryParse(AStr, out uint result)) - { - result = ADefault; - } - return result; - } - /// - /// Преобразование строки в число - /// - /// Строка - /// Значение по умолчанию (по умолчанию, 0) - /// Число - public static long StrToInt64(string AStr, long ADefault = 0) - { - if (!long.TryParse(AStr, out long result)) - { - result = ADefault; - } - return result; - } - /// - /// Преобразование строки в число - /// - /// Строка - /// Значение по умолчанию (по умолчанию, 0) - /// Число - public static ulong StrToUInt64(string AStr, ulong ADefault = 0) - { - if (!ulong.TryParse(AStr, out ulong result)) - { - result = ADefault; - } - return result; - } - /// - /// Преобразование строки в число - /// - /// Строка - /// Значение по умолчанию (по умолчанию, 0) - /// Число - public static byte StrToByte(string AStr, byte ADefault = 0) - { - if (!byte.TryParse(AStr, out byte result)) - { - result = ADefault; - } - return result; - } - #endregion + return result; } + /// + /// Преобразование строки в число + /// + /// Строка + /// Значение по умолчанию (по умолчанию, 0) + /// Число + public static uint StrToUInt (string AStr, uint ADefault = 0) + { + if (!uint.TryParse(AStr, out uint result)) + { + result = ADefault; + } + return result; + } + /// + /// Преобразование строки в число + /// + /// Строка + /// Значение по умолчанию (по умолчанию, 0) + /// Число + public static long StrToInt64 (string AStr, long ADefault = 0) + { + if (!long.TryParse(AStr, out long result)) + { + result = ADefault; + } + return result; + } + /// + /// Преобразование строки в число + /// + /// Строка + /// Значение по умолчанию (по умолчанию, 0) + /// Число + public static ulong StrToUInt64 (string AStr, ulong ADefault = 0) + { + if (!ulong.TryParse(AStr, out ulong result)) + { + result = ADefault; + } + return result; + } + /// + /// Преобразование строки в число + /// + /// Строка + /// Значение по умолчанию (по умолчанию, 0) + /// Число + public static byte StrToByte (string AStr, byte ADefault = 0) + { + if (!byte.TryParse(AStr, out byte result)) + { + result = ADefault; + } + return result; + } + #endregion } \ No newline at end of file diff --git a/anbs_cp/anbs_cp.csproj b/anbs_cp/anbs_cp.csproj index 8d583a6..919d18c 100644 --- a/anbs_cp/anbs_cp.csproj +++ b/anbs_cp/anbs_cp.csproj @@ -2,7 +2,7 @@ net6.0 - 1.20211111.0 + 1.2021.1113 Alexander Babaev ANB Software Components Pack Library of some useful functions in C# language. @@ -15,8 +15,8 @@ False https://github.com/GoodBoyAlex/anbsoftware_componentspack https://github.com/GoodBoyAlex/anbsoftware_componentspack - 1.2021.1111 - 1.2021.1111 + 1.2021.1113 + 1.2021.1113 diff --git a/demo/CountValueTest.Designer.cs b/demo/CountValueTest.Designer.cs index 6656a3b..5b54914 100644 --- a/demo/CountValueTest.Designer.cs +++ b/demo/CountValueTest.Designer.cs @@ -1,134 +1,133 @@ -namespace demo +namespace demo; + +partial class CountValueTest { - partial class CountValueTest + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose (bool disposing) { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) + if (disposing && (components != null)) { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); + components.Dispose(); } + base.Dispose(disposing); + } - #region Windows Form Designer generated code + #region Windows Form Designer generated code - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.InsertDataLabel = new System.Windows.Forms.Label(); - this.InsertDataBox = new System.Windows.Forms.TextBox(); - this.ResultLabel = new System.Windows.Forms.Label(); - this.CalculateButton = new System.Windows.Forms.Button(); - this.SelectFormatterLabel = new System.Windows.Forms.Label(); - this.SelectFormatterBox = new System.Windows.Forms.ComboBox(); - this.SuspendLayout(); - // - // InsertDataLabel - // - this.InsertDataLabel.AutoSize = true; - this.InsertDataLabel.Location = new System.Drawing.Point(12, 66); - this.InsertDataLabel.Name = "InsertDataLabel"; - this.InsertDataLabel.Size = new System.Drawing.Size(197, 17); - this.InsertDataLabel.TabIndex = 0; - this.InsertDataLabel.Text = "&Insert any int value:"; - // - // InsertDataBox - // - this.InsertDataBox.Location = new System.Drawing.Point(12, 86); - this.InsertDataBox.Name = "InsertDataBox"; - this.InsertDataBox.Size = new System.Drawing.Size(246, 24); - this.InsertDataBox.TabIndex = 1; - // - // ResultLabel - // - this.ResultLabel.Dock = System.Windows.Forms.DockStyle.Bottom; - this.ResultLabel.Location = new System.Drawing.Point(0, 143); - this.ResultLabel.Margin = new System.Windows.Forms.Padding(5); - this.ResultLabel.Name = "ResultLabel"; - this.ResultLabel.Padding = new System.Windows.Forms.Padding(5); - this.ResultLabel.Size = new System.Drawing.Size(270, 79); - this.ResultLabel.TabIndex = 2; - this.ResultLabel.Text = "&Insert any int value to insert box above and press \"Calculate\" button to see res" + - "ult..."; - this.ResultLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // CalculateButton - // - this.CalculateButton.Location = new System.Drawing.Point(81, 116); - this.CalculateButton.Name = "CalculateButton"; - this.CalculateButton.Size = new System.Drawing.Size(103, 23); - this.CalculateButton.TabIndex = 3; - this.CalculateButton.Text = "Calc&ulate"; - this.CalculateButton.UseVisualStyleBackColor = true; - this.CalculateButton.Click += new System.EventHandler(this.CalculateButton_Click); - // - // SelectFormatterLabel - // - this.SelectFormatterLabel.AutoSize = true; - this.SelectFormatterLabel.Location = new System.Drawing.Point(12, 9); - this.SelectFormatterLabel.Name = "SelectFormatterLabel"; - this.SelectFormatterLabel.Size = new System.Drawing.Size(161, 17); - this.SelectFormatterLabel.TabIndex = 4; - this.SelectFormatterLabel.Text = "&Select formatter:"; - // - // SelectFormatterBox - // - this.SelectFormatterBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.SelectFormatterBox.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.SelectFormatterBox.FormattingEnabled = true; - this.SelectFormatterBox.Items.AddRange(new object[] { + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent () + { + this.InsertDataLabel = new System.Windows.Forms.Label(); + this.InsertDataBox = new System.Windows.Forms.TextBox(); + this.ResultLabel = new System.Windows.Forms.Label(); + this.CalculateButton = new System.Windows.Forms.Button(); + this.SelectFormatterLabel = new System.Windows.Forms.Label(); + this.SelectFormatterBox = new System.Windows.Forms.ComboBox(); + this.SuspendLayout(); + // + // InsertDataLabel + // + this.InsertDataLabel.AutoSize = true; + this.InsertDataLabel.Location = new System.Drawing.Point(12, 66); + this.InsertDataLabel.Name = "InsertDataLabel"; + this.InsertDataLabel.Size = new System.Drawing.Size(197, 17); + this.InsertDataLabel.TabIndex = 0; + this.InsertDataLabel.Text = "&Insert any int value:"; + // + // InsertDataBox + // + this.InsertDataBox.Location = new System.Drawing.Point(12, 86); + this.InsertDataBox.Name = "InsertDataBox"; + this.InsertDataBox.Size = new System.Drawing.Size(246, 24); + this.InsertDataBox.TabIndex = 1; + // + // ResultLabel + // + this.ResultLabel.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ResultLabel.Location = new System.Drawing.Point(0, 143); + this.ResultLabel.Margin = new System.Windows.Forms.Padding(5); + this.ResultLabel.Name = "ResultLabel"; + this.ResultLabel.Padding = new System.Windows.Forms.Padding(5); + this.ResultLabel.Size = new System.Drawing.Size(270, 79); + this.ResultLabel.TabIndex = 2; + this.ResultLabel.Text = "&Insert any int value to insert box above and press \"Calculate\" button to see res" + +"ult..."; + this.ResultLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // CalculateButton + // + this.CalculateButton.Location = new System.Drawing.Point(81, 116); + this.CalculateButton.Name = "CalculateButton"; + this.CalculateButton.Size = new System.Drawing.Size(103, 23); + this.CalculateButton.TabIndex = 3; + this.CalculateButton.Text = "Calc&ulate"; + this.CalculateButton.UseVisualStyleBackColor = true; + this.CalculateButton.Click += new System.EventHandler(this.CalculateButton_Click); + // + // SelectFormatterLabel + // + this.SelectFormatterLabel.AutoSize = true; + this.SelectFormatterLabel.Location = new System.Drawing.Point(12, 9); + this.SelectFormatterLabel.Name = "SelectFormatterLabel"; + this.SelectFormatterLabel.Size = new System.Drawing.Size(161, 17); + this.SelectFormatterLabel.TabIndex = 4; + this.SelectFormatterLabel.Text = "&Select formatter:"; + // + // SelectFormatterBox + // + this.SelectFormatterBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.SelectFormatterBox.FlatStyle = System.Windows.Forms.FlatStyle.System; + this.SelectFormatterBox.FormattingEnabled = true; + this.SelectFormatterBox.Items.AddRange(new object[] { "CountFormatter", "FileSizeFormatter"}); - this.SelectFormatterBox.Location = new System.Drawing.Point(12, 29); - this.SelectFormatterBox.Name = "SelectFormatterBox"; - this.SelectFormatterBox.Size = new System.Drawing.Size(246, 25); - this.SelectFormatterBox.TabIndex = 5; - // - // CountValueTest - // - this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 17F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(270, 222); - this.Controls.Add(this.SelectFormatterBox); - this.Controls.Add(this.SelectFormatterLabel); - this.Controls.Add(this.CalculateButton); - this.Controls.Add(this.ResultLabel); - this.Controls.Add(this.InsertDataBox); - this.Controls.Add(this.InsertDataLabel); - this.Font = new System.Drawing.Font("Courier New", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "CountValueTest"; - this.ShowIcon = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Formatter Test Unit"; - this.Load += new System.EventHandler(this.CountValueTest_Load); - this.ResumeLayout(false); - this.PerformLayout(); + this.SelectFormatterBox.Location = new System.Drawing.Point(12, 29); + this.SelectFormatterBox.Name = "SelectFormatterBox"; + this.SelectFormatterBox.Size = new System.Drawing.Size(246, 25); + this.SelectFormatterBox.TabIndex = 5; + // + // CountValueTest + // + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(270, 222); + this.Controls.Add(this.SelectFormatterBox); + this.Controls.Add(this.SelectFormatterLabel); + this.Controls.Add(this.CalculateButton); + this.Controls.Add(this.ResultLabel); + this.Controls.Add(this.InsertDataBox); + this.Controls.Add(this.InsertDataLabel); + this.Font = new System.Drawing.Font("Courier New", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); + this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "CountValueTest"; + this.ShowIcon = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Formatter Test Unit"; + this.Load += new System.EventHandler(this.CountValueTest_Load); + this.ResumeLayout(false); + this.PerformLayout(); - } - - #endregion - - private Label InsertDataLabel; - private TextBox InsertDataBox; - private Label ResultLabel; - private Button CalculateButton; - private Label SelectFormatterLabel; - private ComboBox SelectFormatterBox; } + + #endregion + + private Label InsertDataLabel; + private TextBox InsertDataBox; + private Label ResultLabel; + private Button CalculateButton; + private Label SelectFormatterLabel; + private ComboBox SelectFormatterBox; } \ No newline at end of file diff --git a/demo/CountValueTest.cs b/demo/CountValueTest.cs index defe9b7..e6ad7e5 100644 --- a/demo/CountValueTest.cs +++ b/demo/CountValueTest.cs @@ -1,42 +1,32 @@ using anbs_cp; -namespace demo + +namespace demo; + +public partial class CountValueTest: Form { - public partial class CountValueTest : Form + public CountValueTest () { - public CountValueTest() + InitializeComponent(); + } + + private void CalculateButton_Click (object sender, EventArgs e) + { + + if (string.IsNullOrEmpty(InsertDataBox.Text)) + return; + + long value = TypeConverter.StrToInt64(InsertDataBox.Text); + IValueFormatter formatter = SelectFormatterBox.SelectedIndex switch { - InitializeComponent(); - } + 0 => new CountFormatter(), + 1 => new FileSizeFormatter(), + _ => new CountFormatter(), + }; + ResultLabel.Text = formatter.Format(value); + } - private void CalculateButton_Click(object sender, EventArgs e) - { - - if (string.IsNullOrEmpty(InsertDataBox.Text)) - return; - - IValueFormatter formatter; - - long value = TypeConverter.StrToInt64(InsertDataBox.Text); - - switch (SelectFormatterBox.SelectedIndex) - { - case 0: - formatter = new CountFormatter(); - break; - case 1: - formatter = new FileSizeFormatter(); - break; - default: - formatter = new CountFormatter(); - break; - } - - ResultLabel.Text = formatter.Format(value); - } - - private void CountValueTest_Load(object sender, EventArgs e) - { - SelectFormatterBox.SelectedIndex = 0; - } + private void CountValueTest_Load (object sender, EventArgs e) + { + SelectFormatterBox.SelectedIndex = 0; } } \ No newline at end of file diff --git a/demo/Program.cs b/demo/Program.cs index 47c0157..bcf1871 100644 --- a/demo/Program.cs +++ b/demo/Program.cs @@ -1,15 +1,14 @@ -namespace demo +namespace demo; + +internal static class Program { - internal static class Program + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main () { - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { - ApplicationConfiguration.Initialize(); - Application.Run(new CountValueTest()); - } + ApplicationConfiguration.Initialize(); + Application.Run(new CountValueTest()); } } \ No newline at end of file