From c0b76475efedda88d0d79b300b85392c40b97f01 Mon Sep 17 00:00:00 2001 From: Yourdax Date: Wed, 4 Sep 2024 20:05:23 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D1=87=D1=82=D0=B8=20=D0=B2=D1=81?= =?UTF-8?q?=D0=B5,=20=D1=82=D1=80=D0=B5=D1=82=D1=8C=D1=8F=20=D1=87=D0=B0?= =?UTF-8?q?=D1=81=D1=82=D1=8C=20=D0=BE=D1=81=D1=82=D0=B0=D0=BB=D0=B0=D1=81?= =?UTF-8?q?=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- KopLab1/FormLibrary/CustomListBox.Designer.cs | 58 ++++++++ KopLab1/FormLibrary/CustomListBox.cs | 74 ++++++++++ KopLab1/FormLibrary/CustomListBox.resx | 120 ++++++++++++++++ .../Exceptions/EmptyValueException.cs | 13 ++ .../Exceptions/InvalidValueTypeException.cs | 13 ++ KopLab1/FormLibrary/FormLibrary.csproj | 10 ++ .../IntegerInputControl.Designer.cs | 68 +++++++++ KopLab1/FormLibrary/IntegerInputControl.cs | 97 +++++++++++++ KopLab1/FormLibrary/IntegerInputControl.resx | 120 ++++++++++++++++ KopLab1/Forms/Forms.csproj | 15 ++ KopLab1/Forms/MainForm.Designer.cs | 130 ++++++++++++++++++ KopLab1/Forms/MainForm.cs | 94 +++++++++++++ KopLab1/Forms/MainForm.resx | 120 ++++++++++++++++ KopLab1/Forms/Program.cs | 17 +++ KopLab1/KopLab1.sln | 31 +++++ 15 files changed, 980 insertions(+) create mode 100644 KopLab1/FormLibrary/CustomListBox.Designer.cs create mode 100644 KopLab1/FormLibrary/CustomListBox.cs create mode 100644 KopLab1/FormLibrary/CustomListBox.resx create mode 100644 KopLab1/FormLibrary/Exceptions/EmptyValueException.cs create mode 100644 KopLab1/FormLibrary/Exceptions/InvalidValueTypeException.cs create mode 100644 KopLab1/FormLibrary/FormLibrary.csproj create mode 100644 KopLab1/FormLibrary/IntegerInputControl.Designer.cs create mode 100644 KopLab1/FormLibrary/IntegerInputControl.cs create mode 100644 KopLab1/FormLibrary/IntegerInputControl.resx create mode 100644 KopLab1/Forms/Forms.csproj create mode 100644 KopLab1/Forms/MainForm.Designer.cs create mode 100644 KopLab1/Forms/MainForm.cs create mode 100644 KopLab1/Forms/MainForm.resx create mode 100644 KopLab1/Forms/Program.cs create mode 100644 KopLab1/KopLab1.sln diff --git a/KopLab1/FormLibrary/CustomListBox.Designer.cs b/KopLab1/FormLibrary/CustomListBox.Designer.cs new file mode 100644 index 0000000..fc24a8e --- /dev/null +++ b/KopLab1/FormLibrary/CustomListBox.Designer.cs @@ -0,0 +1,58 @@ +namespace FormLibrary +{ + partial class CustomListBox + { + /// + /// Обязательная переменная конструктора. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Освободить все используемые ресурсы. + /// + /// истинно, если управляемый ресурс должен быть удален; иначе ложно. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Код, автоматически созданный конструктором компонентов + + /// + /// Требуемый метод для поддержки конструктора — не изменяйте + /// содержимое этого метода с помощью редактора кода. + /// + private void InitializeComponent() + { + listBox1 = new ListBox(); + SuspendLayout(); + // + // listBox1 + // + listBox1.FormattingEnabled = true; + listBox1.ItemHeight = 15; + listBox1.Location = new Point(3, 3); + listBox1.Name = "listBox1"; + listBox1.Size = new Size(231, 169); + listBox1.TabIndex = 0; + listBox1.SelectedIndexChanged += ListBox1_SelectedIndexChanged; + // + // CustomListBox + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + Controls.Add(listBox1); + Name = "CustomListBox"; + Size = new Size(237, 179); + ResumeLayout(false); + } + + #endregion + + private ListBox listBox1; + } +} diff --git a/KopLab1/FormLibrary/CustomListBox.cs b/KopLab1/FormLibrary/CustomListBox.cs new file mode 100644 index 0000000..710230a --- /dev/null +++ b/KopLab1/FormLibrary/CustomListBox.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using static System.Windows.Forms.VisualStyles.VisualStyleElement.Header; + +namespace FormLibrary +{ + public partial class CustomListBox : UserControl + { + + public event EventHandler? SelectedItemChanged; + public CustomListBox() + { + InitializeComponent(); + } + + public string SelectedItem + { + get + { + if (listBox1.SelectedItem != null) + { + return listBox1.SelectedItem.ToString(); + } + return string.Empty; + } + set + { + int index = listBox1.Items.IndexOf(value); + if (index >= 0) + { + listBox1.SelectedIndex = index; + } + } + } + + + private void ListBox1_SelectedIndexChanged(object? sender, EventArgs e) + { + SelectedItemChanged?.Invoke(this, EventArgs.Empty); + } + public void PopulateListBox(ListBox listBox, List items) + { + listBox1.Items.Clear(); + + foreach (var item in items) + { + listBox.Items.Add(item); + } + } + // Метод для заполнения списка элементами + public void PopulateListBox(List items) + { + listBox1.Items.Clear(); + + foreach (var item in items) + { + listBox1.Items.Add(item); + } + } + + // Метод для очистки списка + public void ClearListBox() + { + listBox1.Items.Clear(); + } + } +} diff --git a/KopLab1/FormLibrary/CustomListBox.resx b/KopLab1/FormLibrary/CustomListBox.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/KopLab1/FormLibrary/CustomListBox.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/KopLab1/FormLibrary/Exceptions/EmptyValueException.cs b/KopLab1/FormLibrary/Exceptions/EmptyValueException.cs new file mode 100644 index 0000000..9ac3854 --- /dev/null +++ b/KopLab1/FormLibrary/Exceptions/EmptyValueException.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FormLibrary.Exceptions +{ + public class EmptyValueException : Exception + { + public EmptyValueException() : base("Значение не заполнено.") { } + } +} diff --git a/KopLab1/FormLibrary/Exceptions/InvalidValueTypeException.cs b/KopLab1/FormLibrary/Exceptions/InvalidValueTypeException.cs new file mode 100644 index 0000000..09cc6df --- /dev/null +++ b/KopLab1/FormLibrary/Exceptions/InvalidValueTypeException.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FormLibrary.Exceptions +{ + public class InvalidValueTypeException : Exception + { + public InvalidValueTypeException() : base("Значение не соответствует требуемому типу.") { } + } +} diff --git a/KopLab1/FormLibrary/FormLibrary.csproj b/KopLab1/FormLibrary/FormLibrary.csproj new file mode 100644 index 0000000..3e210aa --- /dev/null +++ b/KopLab1/FormLibrary/FormLibrary.csproj @@ -0,0 +1,10 @@ + + + + net8.0-windows + enable + true + enable + + + diff --git a/KopLab1/FormLibrary/IntegerInputControl.Designer.cs b/KopLab1/FormLibrary/IntegerInputControl.Designer.cs new file mode 100644 index 0000000..91a5670 --- /dev/null +++ b/KopLab1/FormLibrary/IntegerInputControl.Designer.cs @@ -0,0 +1,68 @@ +namespace FormLibrary +{ + partial class IntegerInputControl + { + /// + /// Обязательная переменная конструктора. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Освободить все используемые ресурсы. + /// + /// истинно, если управляемый ресурс должен быть удален; иначе ложно. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Код, автоматически созданный конструктором компонентов + + /// + /// Требуемый метод для поддержки конструктора — не изменяйте + /// содержимое этого метода с помощью редактора кода. + /// + private void InitializeComponent() + { + checkBoxNull = new CheckBox(); + textBoxInput = new TextBox(); + SuspendLayout(); + // + // checkBoxNull + // + checkBoxNull.AutoSize = true; + checkBoxNull.Location = new Point(13, 17); + checkBoxNull.Name = "checkBoxNull"; + checkBoxNull.Size = new Size(15, 14); + checkBoxNull.TabIndex = 0; + checkBoxNull.UseVisualStyleBackColor = true; + // + // textBoxInput + // + textBoxInput.Location = new Point(34, 13); + textBoxInput.Name = "textBoxInput"; + textBoxInput.Size = new Size(100, 23); + textBoxInput.TabIndex = 1; + // + // IntegerInputControl + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + Controls.Add(textBoxInput); + Controls.Add(checkBoxNull); + Name = "IntegerInputControl"; + Size = new Size(146, 49); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private CheckBox checkBoxNull; + private TextBox textBoxInput; + } +} diff --git a/KopLab1/FormLibrary/IntegerInputControl.cs b/KopLab1/FormLibrary/IntegerInputControl.cs new file mode 100644 index 0000000..652b6f1 --- /dev/null +++ b/KopLab1/FormLibrary/IntegerInputControl.cs @@ -0,0 +1,97 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +using System; +using System.Windows.Forms; +using FormLibrary.Exceptions; + +namespace FormLibrary +{ + public partial class IntegerInputControl : UserControl + { + // Событие, вызываемое при изменении значения в TextBox + public event EventHandler? ValueChanged; + + // Событие, вызываемое при изменении состояния CheckBox + public event EventHandler? CheckBoxChanged; + + public IntegerInputControl() + { + InitializeComponent(); + + checkBoxNull.CheckedChanged += CheckBoxNull_CheckedChanged; + textBoxInput.TextChanged += TextBoxInput_TextChanged; + } + + // Публичное свойство для установки и получения введенного значения + public int? Value + { + get + { + if (checkBoxNull.Checked) + { + return null; + } + else + { + if (string.IsNullOrWhiteSpace(textBoxInput.Text)) + { + throw new EmptyValueException(); + } + + if (int.TryParse(textBoxInput.Text, out int result)) + { + return result; + } + else + { + throw new InvalidValueTypeException(); + } + } + } + set + { + if (value == null) + { + checkBoxNull.Checked = true; + textBoxInput.Enabled = false; + textBoxInput.Text = string.Empty; + } + else + { + checkBoxNull.Checked = false; + textBoxInput.Enabled = true; + textBoxInput.Text = value.ToString(); + } + } + } + + // Метод обработки изменения состояния CheckBox + private void CheckBoxNull_CheckedChanged(object sender, EventArgs e) + { + textBoxInput.Enabled = !checkBoxNull.Checked; + if (checkBoxNull.Checked) + { + textBoxInput.Text = string.Empty; + } + + // Вызываем событие при изменении состояния CheckBox + CheckBoxChanged?.Invoke(this, EventArgs.Empty); + } + + // Метод обработки изменения текста в текстовом поле + private void TextBoxInput_TextChanged(object sender, EventArgs e) + { + // Вызываем событие при изменении текста + ValueChanged?.Invoke(this, EventArgs.Empty); + } + } +} + diff --git a/KopLab1/FormLibrary/IntegerInputControl.resx b/KopLab1/FormLibrary/IntegerInputControl.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/KopLab1/FormLibrary/IntegerInputControl.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/KopLab1/Forms/Forms.csproj b/KopLab1/Forms/Forms.csproj new file mode 100644 index 0000000..07a9ca3 --- /dev/null +++ b/KopLab1/Forms/Forms.csproj @@ -0,0 +1,15 @@ + + + + WinExe + net8.0-windows + enable + true + enable + + + + + + + \ No newline at end of file diff --git a/KopLab1/Forms/MainForm.Designer.cs b/KopLab1/Forms/MainForm.Designer.cs new file mode 100644 index 0000000..060926b --- /dev/null +++ b/KopLab1/Forms/MainForm.Designer.cs @@ -0,0 +1,130 @@ +namespace Forms +{ + partial class MainForm + { + /// + /// 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)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #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() + { + customListBox1 = new FormLibrary.CustomListBox(); + button1 = new Button(); + button2 = new Button(); + integerInputControl1 = new FormLibrary.IntegerInputControl(); + button3 = new Button(); + button4 = new Button(); + textBox1 = new TextBox(); + SuspendLayout(); + // + // customListBox1 + // + customListBox1.Location = new Point(12, 12); + customListBox1.Name = "customListBox1"; + customListBox1.SelectedItem = ""; + customListBox1.Size = new Size(237, 176); + customListBox1.TabIndex = 0; + // + // button1 + // + button1.Location = new Point(12, 194); + button1.Name = "button1"; + button1.Size = new Size(237, 34); + button1.TabIndex = 1; + button1.Text = "Заполнить список"; + button1.UseVisualStyleBackColor = true; + button1.Click += ButtonLoad_Click; + // + // button2 + // + button2.Location = new Point(12, 234); + button2.Name = "button2"; + button2.Size = new Size(237, 34); + button2.TabIndex = 2; + button2.Text = "Очистить список"; + button2.UseVisualStyleBackColor = true; + button2.Click += ButtonClear_Click; + // + // integerInputControl1 + // + integerInputControl1.Location = new Point(329, 12); + integerInputControl1.Name = "integerInputControl1"; + integerInputControl1.Size = new Size(146, 56); + integerInputControl1.TabIndex = 3; + // + // button3 + // + button3.Location = new Point(361, 74); + button3.Name = "button3"; + button3.Size = new Size(103, 23); + button3.TabIndex = 4; + button3.Text = "Set"; + button3.UseVisualStyleBackColor = true; + button3.Click += buttonInput_Click; + // + // button4 + // + button4.Location = new Point(361, 103); + button4.Name = "button4"; + button4.Size = new Size(103, 23); + button4.TabIndex = 5; + button4.Text = "Get"; + button4.UseVisualStyleBackColor = true; + button4.Click += buttonOutput_Click; + // + // textBox1 + // + textBox1.Location = new Point(329, 132); + textBox1.Name = "textBox1"; + textBox1.Size = new Size(135, 23); + textBox1.TabIndex = 6; + // + // MainForm + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(textBox1); + Controls.Add(button4); + Controls.Add(button3); + Controls.Add(integerInputControl1); + Controls.Add(button2); + Controls.Add(button1); + Controls.Add(customListBox1); + Name = "MainForm"; + Text = "MainForm"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private FormLibrary.CustomListBox customListBox1; + private Button button1; + private Button button2; + private FormLibrary.IntegerInputControl integerInputControl1; + private Button button3; + private Button button4; + private TextBox textBox1; + } +} \ No newline at end of file diff --git a/KopLab1/Forms/MainForm.cs b/KopLab1/Forms/MainForm.cs new file mode 100644 index 0000000..e1526bf --- /dev/null +++ b/KopLab1/Forms/MainForm.cs @@ -0,0 +1,94 @@ +using FormLibrary; +using FormLibrary.Exceptions; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Windows.Forms.VisualStyles; +using static System.Windows.Forms.VisualStyles.VisualStyleElement.Header; + +namespace Forms +{ + public partial class MainForm : Form + { + private int? savedValue; + public MainForm() + { + InitializeComponent(); + customListBox1.SelectedItemChanged += CustomListBox1_SelectedItemChanged; + integerInputControl1.ValueChanged += IntegerInputControl1_ValueChanged; + integerInputControl1.CheckBoxChanged += IntegerInputControl_CheckBoxChanged; + } + + private void CustomListBox1_SelectedItemChanged(object? sender, EventArgs e) + { + if (sender is CustomListBox customListBox) + { + string selectedItem = customListBox.SelectedItem; + MessageBox.Show($"Выбранный элемент: {selectedItem}", "Выбор элемента", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + // Обработчик для кнопки загрузки элементов + private void ButtonLoad_Click(object? sender, EventArgs e) + { + List items = new List(); + for (int i = 0; i <= 5; i++) + { + items.Add("Item " + i.ToString()); + } + + customListBox1.PopulateListBox(items); + } + + // Обработчик для кнопки очистки списка + private void ButtonClear_Click(object? sender, EventArgs e) + { + customListBox1.ClearListBox(); + } + private void buttonInput_Click(object sender, EventArgs e) + { + try + { + // Проверка и сохранение значения в контроллере + savedValue = integerInputControl1.Value; + MessageBox.Show("Значение успешно сохранено.", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch (EmptyValueException ex) + { + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + catch (InvalidValueTypeException ex) + { + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void buttonOutput_Click(object sender, EventArgs e) + { + if (savedValue.HasValue) + { + MessageBox.Show($"Сохраненное значение: {savedValue}", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else + { + MessageBox.Show("Сохраненное значение: null", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + private void IntegerInputControl1_ValueChanged(object? sender, EventArgs e) + { + // Обработка изменения значения в IntegerInputControl + textBox1.Text = "Textbox changed"; + } + + private void IntegerInputControl_CheckBoxChanged(object? sender, EventArgs e) + { + // Обработка изменения состояния CheckBox в IntegerInputControl + textBox1.Text = "Checkbox changed"; + } + } +} diff --git a/KopLab1/Forms/MainForm.resx b/KopLab1/Forms/MainForm.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/KopLab1/Forms/MainForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/KopLab1/Forms/Program.cs b/KopLab1/Forms/Program.cs new file mode 100644 index 0000000..ff6d1a9 --- /dev/null +++ b/KopLab1/Forms/Program.cs @@ -0,0 +1,17 @@ +namespace Forms +{ + internal static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + // To customize application configuration such as set high DPI settings or default font, + // see https://aka.ms/applicationconfiguration. + ApplicationConfiguration.Initialize(); + Application.Run(new MainForm()); + } + } +} \ No newline at end of file diff --git a/KopLab1/KopLab1.sln b/KopLab1/KopLab1.sln new file mode 100644 index 0000000..5506f5f --- /dev/null +++ b/KopLab1/KopLab1.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.11.35222.181 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormLibrary", "FormLibrary\FormLibrary.csproj", "{E840E4D9-B195-449A-AB24-ECAAE2655D58}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Forms", "Forms\Forms.csproj", "{83F3C50D-D872-48B6-8932-1D5B7E0A40F0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E840E4D9-B195-449A-AB24-ECAAE2655D58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E840E4D9-B195-449A-AB24-ECAAE2655D58}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E840E4D9-B195-449A-AB24-ECAAE2655D58}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E840E4D9-B195-449A-AB24-ECAAE2655D58}.Release|Any CPU.Build.0 = Release|Any CPU + {83F3C50D-D872-48B6-8932-1D5B7E0A40F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {83F3C50D-D872-48B6-8932-1D5B7E0A40F0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {83F3C50D-D872-48B6-8932-1D5B7E0A40F0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {83F3C50D-D872-48B6-8932-1D5B7E0A40F0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {C6DEED66-161D-4CE7-B327-9DB0A6D32439} + EndGlobalSection +EndGlobal