Skip to content

Commit c4df101

Browse files
committed
Условие задачи:
УСЛОВИЕ ЗАДАЧИ: Представьте, что у вас на форме есть прямоугольник, границы которого на 10 пикселей отстоят от границ рабочей области формы. Необходимо создать следующие обработчики: a.Обработчик нажатия левой кнопки мыши , который выводит сообщение о том, где находится текущая точка: внутри прямоугольника, снаружи, на границе прямоугольника. Если при нажатии левой кнопки мыши была нажата кнопка Control(Ctrl), то приложение должно закрываться.
1 parent 857d036 commit c4df101

File tree

14 files changed

+638
-5
lines changed

14 files changed

+638
-5
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio 14
4+
VisualStudioVersion = 14.0.23107.0
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hometasks-3a", "Hometasks-3a\Hometasks-3a.csproj", "{9C20B8C0-DB6E-4DA4-9A88-BE3BE0F2714D}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
Debug|Any CPU = Debug|Any CPU
11+
Release|Any CPU = Release|Any CPU
12+
EndGlobalSection
13+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
14+
{9C20B8C0-DB6E-4DA4-9A88-BE3BE0F2714D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15+
{9C20B8C0-DB6E-4DA4-9A88-BE3BE0F2714D}.Debug|Any CPU.Build.0 = Debug|Any CPU
16+
{9C20B8C0-DB6E-4DA4-9A88-BE3BE0F2714D}.Release|Any CPU.ActiveCfg = Release|Any CPU
17+
{9C20B8C0-DB6E-4DA4-9A88-BE3BE0F2714D}.Release|Any CPU.Build.0 = Release|Any CPU
18+
EndGlobalSection
19+
GlobalSection(SolutionProperties) = preSolution
20+
HideSolutionNode = FALSE
21+
EndGlobalSection
22+
EndGlobal
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<configuration>
3+
<startup>
4+
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
5+
</startup>
6+
</configuration>
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Drawing;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
using System.Windows.Forms;
8+
9+
namespace Hometasks_3a
10+
{
11+
/// <summary>
12+
/// Описание положения мыши в момент клика
13+
/// по отношению к воображаемому прямоугольнику
14+
/// </summary>
15+
enum MousePosition : int
16+
{
17+
InRectangle = 0,
18+
OutRectangle,
19+
OnBorder,
20+
Unknown,
21+
}
22+
23+
/// <summary>
24+
/// Главное окно программы
25+
/// </summary>
26+
class FormMain : Form
27+
{
28+
/// <summary>
29+
/// Конструкто главного окна программы
30+
/// </summary>
31+
public FormMain()
32+
{
33+
this.FormMainInitialization();
34+
}
35+
36+
/// <summary>
37+
/// Создает главное окно программы
38+
/// </summary>
39+
private void FormMainInitialization()
40+
{
41+
this.ClientSize = new Size(400, 400);
42+
this.StartPosition = FormStartPosition.CenterScreen;
43+
this.Text = "Задание №3";
44+
this.BackColor = Color.DarkSlateGray;
45+
this.ForeColor = Color.White;
46+
this.FormBorderStyle = FormBorderStyle.FixedSingle;
47+
this.MouseClick += new MouseEventHandler(FormMainClickOn);
48+
}
49+
50+
/// <summary>
51+
/// Обрабоботчик события "нажатие левой кнопки мыши".
52+
/// В зависимости от координат курсора, в момент нажатия мыши
53+
/// выводит сообщения о положении курсора по отношению к
54+
/// воображаемому прямоугольнику, расположенному в рабочей области
55+
/// окна
56+
/// </summary>
57+
private void FormMainClickOn(Object sender, MouseEventArgs e)
58+
{
59+
if (Control.ModifierKeys != Keys.Control)
60+
{
61+
if (MouseButtons.Left == e.Button)
62+
{
63+
switch (GetMousePosition(e))
64+
{
65+
case Hometasks_3a.MousePosition.OnBorder:
66+
MessageBox.Show("Клик мыши сделан - НА ГРАНИЦЕ " +
67+
"прямоугольника!", "Уведомление!",
68+
MessageBoxButtons.OK);
69+
break;
70+
case Hometasks_3a.MousePosition.InRectangle:
71+
MessageBox.Show("Клик мыши сделан - ВНУТРИ " +
72+
"прямоугольника!", "Уведомление!",
73+
MessageBoxButtons.OK);
74+
break;
75+
case Hometasks_3a.MousePosition.OutRectangle:
76+
MessageBox.Show("Клик мыши сделан - ВНЕ " +
77+
"прямоугольника!", "Уведомление!",
78+
MessageBoxButtons.OK);
79+
break;
80+
case Hometasks_3a.MousePosition.Unknown:
81+
MessageBox.Show("Позиция курсора мыши," +
82+
"НЕ ОПРЕДЕЛЕНА", "Уведомление!",
83+
MessageBoxButtons.OK);
84+
break;
85+
}
86+
}
87+
}
88+
else
89+
{
90+
if (MouseButtons.Left == e.Button)
91+
{
92+
this.Dispose();
93+
}
94+
}
95+
}
96+
97+
/// <summary>
98+
/// Определяет положение курсора в момент нажатия левой кнопки мыши
99+
/// </summary>
100+
/// <param name="e">объект MouseEventArgs</param>
101+
/// <returns>перечисление MousePosition</returns>
102+
private Hometasks_3a.MousePosition GetMousePosition(MouseEventArgs e)
103+
{
104+
int top, right, bottom, left;
105+
top = this.ClientRectangle.Top + 10;
106+
right = this.ClientRectangle.Right - 10;
107+
bottom = this.ClientRectangle.Bottom - 10;
108+
left = this.ClientRectangle.Left + 10;
109+
if (e.Y < top || e.X > right || e.Y > bottom || e.X < left)
110+
{
111+
return Hometasks_3a.MousePosition.OutRectangle;
112+
}
113+
else
114+
{
115+
if (e.Y > top || e.X < right || e.Y < bottom || e.X > left)
116+
{
117+
return Hometasks_3a.MousePosition.InRectangle;
118+
}
119+
else
120+
{
121+
if (e.Y == top || e.X == right || e.Y == bottom || e.X == left)
122+
{
123+
return Hometasks_3a.MousePosition.OnBorder;
124+
}
125+
else
126+
{
127+
return Hometasks_3a.MousePosition.Unknown;
128+
}
129+
}
130+
}
131+
}
132+
}
133+
}
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
4+
<PropertyGroup>
5+
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
6+
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
7+
<ProjectGuid>{9C20B8C0-DB6E-4DA4-9A88-BE3BE0F2714D}</ProjectGuid>
8+
<OutputType>WinExe</OutputType>
9+
<AppDesignerFolder>Properties</AppDesignerFolder>
10+
<RootNamespace>Hometasks_3a</RootNamespace>
11+
<AssemblyName>Hometasks-3a</AssemblyName>
12+
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
13+
<FileAlignment>512</FileAlignment>
14+
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
15+
</PropertyGroup>
16+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
17+
<PlatformTarget>AnyCPU</PlatformTarget>
18+
<DebugSymbols>true</DebugSymbols>
19+
<DebugType>full</DebugType>
20+
<Optimize>false</Optimize>
21+
<OutputPath>bin\Debug\</OutputPath>
22+
<DefineConstants>DEBUG;TRACE</DefineConstants>
23+
<ErrorReport>prompt</ErrorReport>
24+
<WarningLevel>4</WarningLevel>
25+
</PropertyGroup>
26+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
27+
<PlatformTarget>AnyCPU</PlatformTarget>
28+
<DebugType>pdbonly</DebugType>
29+
<Optimize>true</Optimize>
30+
<OutputPath>bin\Release\</OutputPath>
31+
<DefineConstants>TRACE</DefineConstants>
32+
<ErrorReport>prompt</ErrorReport>
33+
<WarningLevel>4</WarningLevel>
34+
</PropertyGroup>
35+
<ItemGroup>
36+
<Reference Include="System" />
37+
<Reference Include="System.Core" />
38+
<Reference Include="System.Xml.Linq" />
39+
<Reference Include="System.Data.DataSetExtensions" />
40+
<Reference Include="Microsoft.CSharp" />
41+
<Reference Include="System.Data" />
42+
<Reference Include="System.Deployment" />
43+
<Reference Include="System.Drawing" />
44+
<Reference Include="System.Net.Http" />
45+
<Reference Include="System.Windows.Forms" />
46+
<Reference Include="System.Xml" />
47+
</ItemGroup>
48+
<ItemGroup>
49+
<Compile Include="FormMain.cs">
50+
<SubType>Form</SubType>
51+
</Compile>
52+
<Compile Include="Program.cs" />
53+
<Compile Include="Properties\AssemblyInfo.cs" />
54+
<EmbeddedResource Include="Properties\Resources.resx">
55+
<Generator>ResXFileCodeGenerator</Generator>
56+
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
57+
<SubType>Designer</SubType>
58+
</EmbeddedResource>
59+
<Compile Include="Properties\Resources.Designer.cs">
60+
<AutoGen>True</AutoGen>
61+
<DependentUpon>Resources.resx</DependentUpon>
62+
</Compile>
63+
<None Include="Properties\Settings.settings">
64+
<Generator>SettingsSingleFileGenerator</Generator>
65+
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
66+
</None>
67+
<Compile Include="Properties\Settings.Designer.cs">
68+
<AutoGen>True</AutoGen>
69+
<DependentUpon>Settings.settings</DependentUpon>
70+
<DesignTimeSharedInput>True</DesignTimeSharedInput>
71+
</Compile>
72+
</ItemGroup>
73+
<ItemGroup>
74+
<None Include="App.config" />
75+
</ItemGroup>
76+
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
77+
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
78+
Other similar extension points exist, see Microsoft.Common.targets.
79+
<Target Name="BeforeBuild">
80+
</Target>
81+
<Target Name="AfterBuild">
82+
</Target>
83+
-->
84+
</Project>
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
//+---------------------------------------------------------------------------+
2+
//УСЛОВИЕ ЗАДАЧИ:
3+
/*
4+
Представьте, что у вас на форме есть прямоугольник, границы которого
5+
на 10 пикселей отстоят от границ рабочей области формы. Необходимо
6+
создать следующие обработчики:
7+
8+
a.Обработчик нажатия левой кнопки мыши , который выводит сообщение о
9+
том, где находится текущая точка: внутри прямоугольника, снаружи, на
10+
границе прямоугольника. Если при нажатии левой кнопки мыши была
11+
нажата кнопка Control(Ctrl), то приложение должно закрываться.
12+
*/
13+
//+---------------------------------------------------------------------------+
14+
15+
16+
17+
using System;
18+
using System.Collections.Generic;
19+
using System.Linq;
20+
using System.Threading.Tasks;
21+
using System.Windows.Forms;
22+
23+
24+
25+
namespace Hometasks_3a
26+
{
27+
static class Program
28+
{
29+
/// <summary>
30+
/// Главная точка входа для приложения.
31+
/// </summary>
32+
[STAThread]
33+
static void Main()
34+
{
35+
Application.EnableVisualStyles();
36+
Application.SetCompatibleTextRenderingDefault(false);
37+
Application.Run(new FormMain());
38+
}
39+
}
40+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using System.Reflection;
2+
using System.Runtime.CompilerServices;
3+
using System.Runtime.InteropServices;
4+
5+
// Управление общими сведениями о сборке осуществляется с помощью
6+
// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,
7+
// связанные со сборкой.
8+
[assembly: AssemblyTitle("Hometasks-3a")]
9+
[assembly: AssemblyDescription("")]
10+
[assembly: AssemblyConfiguration("")]
11+
[assembly: AssemblyCompany("")]
12+
[assembly: AssemblyProduct("Hometasks-3a")]
13+
[assembly: AssemblyCopyright("Copyright © 2015")]
14+
[assembly: AssemblyTrademark("")]
15+
[assembly: AssemblyCulture("")]
16+
17+
// Параметр ComVisible со значением FALSE делает типы в сборке невидимыми
18+
// для COM-компонентов. Если требуется обратиться к типу в этой сборке через
19+
// COM, задайте атрибуту ComVisible значение TRUE для этого типа.
20+
[assembly: ComVisible(false)]
21+
22+
// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
23+
[assembly: Guid("9c20b8c0-db6e-4da4-9a88-be3be0f2714d")]
24+
25+
// Сведения о версии сборки состоят из следующих четырех значений:
26+
//
27+
// Основной номер версии
28+
// Дополнительный номер версии
29+
// Номер сборки
30+
// Редакция
31+
//
32+
// Можно задать все значения или принять номера сборки и редакции по умолчанию
33+
// используя "*", как показано ниже:
34+
// [assembly: AssemblyVersion("1.0.*")]
35+
[assembly: AssemblyVersion("1.0.0.0")]
36+
[assembly: AssemblyFileVersion("1.0.0.0")]

0 commit comments

Comments
 (0)