workshop 2 upload

This commit is contained in:
2024-02-02 11:18:21 +00:00
parent 1dd49720e1
commit 65deb2f082
12 changed files with 813 additions and 0 deletions

6
workshop2/App.config Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

138
workshop2/Form1.Designer.cs generated Normal file
View File

@@ -0,0 +1,138 @@
using System.Windows.Forms;
namespace workshop2
{
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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.button3 = new System.Windows.Forms.Button();
this.button4 = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// pictureBox1
//
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
this.pictureBox1.Location = new System.Drawing.Point(12, 12);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(300, 300);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click);
//
// button1
//
this.button1.Location = new System.Drawing.Point(328, 24);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(100, 40);
this.button1.TabIndex = 1;
this.button1.Text = "Select Image";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.openFileButton_Click);
//
// button2
//
this.button2.Location = new System.Drawing.Point(328, 86);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(100, 40);
this.button2.TabIndex = 2;
this.button2.Text = "Quit";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.quitButton_Click);
//
// openFileDialog1
//
this.openFileDialog1.FileName = "openFileDialog1";
//
// button3
//
this.button3.Location = new System.Drawing.Point(328, 162);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(40, 40);
this.button3.TabIndex = 3;
this.button3.Text = "Left";
this.button3.UseVisualStyleBackColor = true;
this.button3.Click += new System.EventHandler(this.rotateLeft_Click);
//
// button4
//
this.button4.Location = new System.Drawing.Point(388, 162);
this.button4.Name = "button4";
this.button4.Size = new System.Drawing.Size(40, 40);
this.button4.TabIndex = 4;
this.button4.Text = "Right";
this.button4.UseVisualStyleBackColor = true;
this.button4.Click += new System.EventHandler(this.rotateRight_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(357, 146);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(39, 13);
this.label1.TabIndex = 5;
this.label1.Text = "Rotate";
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(449, 322);
this.Controls.Add(this.label1);
this.Controls.Add(this.button4);
this.Controls.Add(this.button3);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.Controls.Add(this.pictureBox1);
this.Name = "Form1";
this.Text = "Form1";
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.PictureBox pictureBox1;
private Button button1;
private Button button2;
private OpenFileDialog openFileDialog1;
private Button button3;
private Button button4;
private Label label1;
}
}

53
workshop2/Form1.cs Normal file
View File

@@ -0,0 +1,53 @@
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;
namespace workshop2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void pictureBox1_Click(object sender, EventArgs e)
{
}
private void openFileButton_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
pictureBox1.Load(openFileDialog1.FileName);
}
private void quitButton_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void rotateLeft_Click(object sender, EventArgs e)
{
Bitmap image = new Bitmap(pictureBox1.Image);
image.RotateFlip(RotateFlipType.Rotate270FlipNone);
pictureBox1.Image = image;
pictureBox1.Refresh();
}
private void rotateRight_Click(object sender, EventArgs e)
{
Bitmap image = new Bitmap(pictureBox1.Image);
image.RotateFlip(RotateFlipType.Rotate90FlipNone);
pictureBox1.Image = image;
pictureBox1.Refresh();
}
}
}

225
workshop2/Form1.resx Normal file
View File

@@ -0,0 +1,225 @@
<?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>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
2SUJ0/n/AEm6be/85JIUHJJJA//Z
</value>
</data>
<metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

22
workshop2/Program.cs Normal file
View File

@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace workshop2
{
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}

View File

@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("workshop2")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("workshop2")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("a7959569-7125-46a3-9c1d-0c164f1b9f16")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,71 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace workshop2.Properties
{
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.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>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("workshop2.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}

View File

@@ -0,0 +1,117 @@
<?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.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: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" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</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" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace workshop2.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}

View File

@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{A7959569-7125-46A3-9C1D-0C164F1B9F16}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>workshop2</RootNamespace>
<AssemblyName>workshop2</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

25
workshop2/workshop2.sln Normal file
View File

@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.8.34330.188
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "workshop2", "workshop2.csproj", "{A7959569-7125-46A3-9C1D-0C164F1B9F16}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A7959569-7125-46A3-9C1D-0C164F1B9F16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A7959569-7125-46A3-9C1D-0C164F1B9F16}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A7959569-7125-46A3-9C1D-0C164F1B9F16}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A7959569-7125-46A3-9C1D-0C164F1B9F16}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {62594886-B98D-4C19-A56B-AC92F89CCBFF}
EndGlobalSection
EndGlobal