ARTICLE AD BOX
using System;
using System.Windows.Forms;
namespace TlacitkaForm
{
internal static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
Form1.cs
using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace TlacitkaForm { public class Form1 : Form { private List<Button> vsechnaTlacitka = new List<Button>(); private List<Button> vybranaTlacitka = new List<Button>(); private Form2 form2; public Form1() { Text = "Form1"; Width = 800; Height = 500; MouseClick += Form1_MouseClick; FormClosing += Form1_FormClosing; } private void Form1_MouseClick(object sender, MouseEventArgs e) { Button tlacitko = new Button(); tlacitko.Text = "Tlacitko " + (vsechnaTlacitka.Count + 1); tlacitko.Width = 90; tlacitko.Height = 30; tlacitko.Left = e.X; tlacitko.Top = e.Y; tlacitko.Click += Tlacitko_Click; Controls.Add(tlacitko); vsechnaTlacitka.Add(tlacitko); } private void Tlacitko_Click(object sender, EventArgs e) { Button tlacitko = sender as Button; if (tlacitko == null) { return; } if (!vybranaTlacitka.Contains(tlacitko)) { vybranaTlacitka.Add(tlacitko); tlacitko.BackColor = Color.LightBlue; } else { vybranaTlacitka.Remove(tlacitko); tlacitko.BackColor = SystemColors.Control; } if (form2 == null || form2.IsDisposed) { form2 = new Form2(this, vybranaTlacitka); form2.Show(); } else { form2.AktualizujTlacitka(vybranaTlacitka); } } public void NastavSouradnice(int x, int y) { foreach (Button tlacitko in vybranaTlacitka) { int maxX = ClientSize.Width - tlacitko.Width; int maxY = ClientSize.Height - tlacitko.Height; if (x < 0) { x = 0; } if (y < 0) { y = 0; } if (x > maxX) { x = maxX; } if (y > maxY) { y = maxY; } tlacitko.Left = x; tlacitko.Top = y; } } public void SmazVybranaTlacitka() { List<Button> kopie = new List<Button>(vybranaTlacitka); foreach (Button tlacitko in kopie) { Controls.Remove(tlacitko); vsechnaTlacitka.Remove(tlacitko); } vybranaTlacitka.Clear(); } public void ZrusVyber() { foreach (Button tlacitko in vybranaTlacitka) { tlacitko.BackColor = SystemColors.Control; } vybranaTlacitka.Clear(); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (vsechnaTlacitka.Count % 2 != 0) { MessageBox.Show( "Aplikaci nelze zavřít, protože počet tlačítek není sudý.", "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Warning ); e.Cancel = true; } } } }Form2.cs
using System; using System.Collections.Generic; using System.Windows.Forms; namespace TlacitkaForm { public class Form2 : Form { private Form1 form1; private List<Button> tlacitka; private Label labelX; private Label labelY; private TextBox textBoxX; private TextBox textBoxY; private Button buttonApply; private Button buttonRemove; private Button buttonClose; public Form2(Form1 form1, List<Button> tlacitka) { this.form1 = form1; this.tlacitka = tlacitka; Text = "Form2"; Width = 300; Height = 200; VytvorPrvky(); } private void VytvorPrvky() { labelX = new Label(); labelX.Text = "X:"; labelX.Left = 20; labelX.Top = 20; labelX.Width = 30; textBoxX = new TextBox(); textBoxX.Left = 60; textBoxX.Top = 20; textBoxX.Width = 100; labelY = new Label(); labelY.Text = "Y:"; labelY.Left = 20; labelY.Top = 55; labelY.Width = 30; textBoxY = new TextBox(); textBoxY.Left = 60; textBoxY.Top = 55; textBoxY.Width = 100; buttonApply = new Button(); buttonApply.Text = "Apply"; buttonApply.Left = 20; buttonApply.Top = 100; buttonApply.Width = 70; buttonApply.Click += ButtonApply_Click; buttonRemove = new Button(); buttonRemove.Text = "Remove"; buttonRemove.Left = 100; buttonRemove.Top = 100; buttonRemove.Width = 80; buttonRemove.Click += ButtonRemove_Click; buttonClose = new Button(); buttonClose.Text = "Close"; buttonClose.Left = 190; buttonClose.Top = 100; buttonClose.Width = 70; buttonClose.Click += ButtonClose_Click; Controls.Add(labelX); Controls.Add(textBoxX); Controls.Add(labelY); Controls.Add(textBoxY); Controls.Add(buttonApply); Controls.Add(buttonRemove); Controls.Add(buttonClose); } public void AktualizujTlacitka(List<Button> novaTlacitka) { tlacitka = novaTlacitka; } private void ButtonApply_Click(object sender, EventArgs e) { int x; int y; if (int.TryParse(textBoxX.Text, out x) && int.TryParse(textBoxY.Text, out y)) { form1.NastavSouradnice(x, y); } else { MessageBox.Show("Zadej platné souřadnice X a Y."); } } private void ButtonRemove_Click(object sender, EventArgs e) { form1.SmazVybranaTlacitka(); Close(); } private void ButtonClose_Click(object sender, EventArgs e) { form1.ZrusVyber(); Close(); } } }Co napsat jako krátký popis
Program po kliknutí na Form1 vytvoří nové tlačítko. Po kliknutí na tlačítko se otevře Form2, kde se dají zadat souřadnice X a Y. Tlačítko Apply přesune vybraná tlačítka na nové souřadnice, ale jen v rozsahu Form1. Tlačítko Remove vybraná tlačítka smaže a Close zavře Form2. Program umožňuje vybrat více tlačítek najednou. Aplikace se dá zavřít pouze tehdy, když je počet tlačítek sudý.Jak to funguje
Kliknutím do Form1 se vytvoří nové tlačítko.
Kliknutím na vytvořené tlačítko se otevře Form2.
Ve Form2 jsou:
Apply Remove Close X YApply změní souřadnice vybraného tlačítka.
Remove smaže vybrané tlačítko.
Close zavře Form2.
Souřadnice jsou omezené tak, aby tlačítko nemohlo být mimo Form1.
Více tlačítek najednou vybereš přes Ctrl + kliknutí na tlačítka.
Aplikace se zavře pouze tehdy, když je počet tlačítek sudý. Если кнопок 1, 3, 5 и т.д., программа не даст закрыть окно.
