В данном примере, пользователь вводит данные, нажимает на кнопку Расчитать. Создается кнопка Очистить. При нажатии на кнопку Очистить, поля ввода очищаются, кнопка Очистить удаляется.
Был сделан эффект плавного увеличения и уменьшения формы, когда кнопка создается и когда удаляется.
Но возникло одно досадное недоразумение. Если пользователь не закроет форму, а второй раз введет данные, нажмет кнопку Расчитать, затем кнопку Очистить, после удаления кнопки, форма дважды изменит свои размеры. Если пользователь три раза сделает вычисления, то форма трижды изменит свои размеры. В чем bug, ни как не пойму.
Был сделан эффект плавного увеличения и уменьшения формы, когда кнопка создается и когда удаляется.
Но возникло одно досадное недоразумение. Если пользователь не закроет форму, а второй раз введет данные, нажмет кнопку Расчитать, затем кнопку Очистить, после удаления кнопки, форма дважды изменит свои размеры. Если пользователь три раза сделает вычисления, то форма трижды изменит свои размеры. В чем bug, ни как не пойму.
Counter.cs
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Threading.Tasks;
namespace
_0024 {
-
class
Counter {
-
ushort
showStart;
-
ushort
showEnd;
-
decimal
price;
-
public
Counter(
string
arg0,
string
arg1,
string
arg2) {
-
ushort
.TryParse(arg0,
out
showStart);
-
ushort
.TryParse(arg1,
out
showEnd);
-
decimal
.TryParse(arg2,
out
price);
-
}
-
public
ushort
ResultShow() {
-
return
(
ushort
)(showEnd - showStart);
-
}
-
public
decimal
Sum() {
-
return
Math.Round((
decimal
)(ResultShow() * price) , 2);
-
}
-
}
}
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Threading.Tasks;
namespace
_0024 {
-
class
Counter {
-
ushort
showStart;
-
ushort
showEnd;
-
decimal
price;
-
public
Counter(
string
arg0,
string
arg1,
string
arg2) {
-
ushort
.TryParse(arg0,
out
showStart);
-
ushort
.TryParse(arg1,
out
showEnd);
-
decimal
.TryParse(arg2,
out
price);
-
}
-
public
ushort
ResultShow() {
-
return
(
ushort
)(showEnd - showStart);
-
}
-
public
decimal
Sum() {
-
return
Math.Round((
decimal
)(ResultShow() * price) , 2);
-
}
-
}
}
Form1.cs
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
_0024 {
-
public
partial
class
Form1 : Form {
-
//создаем кнопку Очистить
-
Button Clear =
new
Button();
-
public
Form1() {
-
InitializeComponent();
-
}
-
private
void
button1_Click(
object
sender, EventArgs e) {
-
Counter C =
new
Counter(textBox1.Text, textBox2.Text, textBox3.Text);
-
textBox4.Text = C.Sum().ToString();
-
//увеличиваем размеры формы
-
int
width = 432;
-
while
(width < 562) {
-
//итерация
-
width += 1;
-
this
.ClientSize =
new
System.Drawing.Size(width, 274);
-
//остановка потока на 0,01секунды
-
System.Threading.Thread.Sleep(10);
-
//прекращаем увеличивать размеры формы
-
if
(width == 562) {
-
break
;
-
}
-
}
-
//задаем параметры кнопки Очистить
-
Clear.Font =
new
System.Drawing.Font(
"Microsoft Sans Serif"
, 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((
byte
)(204)));
-
Clear.Location =
new
System.Drawing.Point(437, 37);
-
//Clear.Name = "button2";
-
Clear.Size =
new
System.Drawing.Size(100, 30);
-
Clear.Text =
"Очистить"
;
-
Clear.UseVisualStyleBackColor =
true
;
-
//добавляем кнопку Очистить в коллекцию элементов управления формы
-
this
.Controls.Add(Clear);
-
//добавляем обработчик события в список обработчиков событий
-
Clear.Click +=
new
EventHandler(Clear_Click);
-
}
-
//обработчик события для кнопки Очистить
-
protected
void
Clear_Click(
object
sender, EventArgs e) {
-
//кнопка Очистить очищает все текстовые поля
-
foreach
(Control i
in
Controls) {
-
if
(i.GetType() ==
typeof
(TextBox)) {
-
i.Text =
string
.Empty;
-
}
-
}
-
//удаляем кнопку Очистить из коллекции элементов управления формы
-
this
.Controls.Remove(Clear);
-
//уменьшаем размеры формы
-
int
width = 562;
-
while
(width > 432) {
-
//итерация
-
width -= 1;
-
this
.ClientSize =
new
System.Drawing.Size(width, 274);
-
//остановка потока на 0,01секунды
-
System.Threading.Thread.Sleep(10);
-
//прекращаем уменьшать размеры формы
-
if
(width == 432) {
-
break
;
-
}
-
}
-
}
-
}
}
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
_0024 {
-
public
partial
class
Form1 : Form {
-
//создаем кнопку Очистить
-
Button Clear =
new
Button();
-
public
Form1() {
-
InitializeComponent();
-
}
-
private
void
button1_Click(
object
sender, EventArgs e) {
-
Counter C =
new
Counter(textBox1.Text, textBox2.Text, textBox3.Text);
-
textBox4.Text = C.Sum().ToString();
-
//увеличиваем размеры формы
-
int
width = 432;
-
while
(width < 562) {
-
//итерация
-
width += 1;
-
this
.ClientSize =
new
System.Drawing.Size(width, 274);
-
//остановка потока на 0,01секунды
-
System.Threading.Thread.Sleep(10);
-
//прекращаем увеличивать размеры формы
-
if
(width == 562) {
-
break
;
-
}
-
}
-
//задаем параметры кнопки Очистить
-
Clear.Font =
new
System.Drawing.Font(
"Microsoft Sans Serif"
, 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((
byte
)(204)));
-
Clear.Location =
new
System.Drawing.Point(437, 37);
-
//Clear.Name = "button2";
-
Clear.Size =
new
System.Drawing.Size(100, 30);
-
Clear.Text =
"Очистить"
;
-
Clear.UseVisualStyleBackColor =
true
;
-
//добавляем кнопку Очистить в коллекцию элементов управления формы
-
this
.Controls.Add(Clear);
-
//добавляем обработчик события в список обработчиков событий
-
Clear.Click +=
new
EventHandler(Clear_Click);
-
}
-
//обработчик события для кнопки Очистить
-
protected
void
Clear_Click(
object
sender, EventArgs e) {
-
//кнопка Очистить очищает все текстовые поля
-
foreach
(Control i
in
Controls) {
-
if
(i.GetType() ==
typeof
(TextBox)) {
-
i.Text =
string
.Empty;
-
}
-
}
-
//удаляем кнопку Очистить из коллекции элементов управления формы
-
this
.Controls.Remove(Clear);
-
//уменьшаем размеры формы
-
int
width = 562;
-
while
(width > 432) {
-
//итерация
-
width -= 1;
-
this
.ClientSize =
new
System.Drawing.Size(width, 274);
-
//остановка потока на 0,01секунды
-
System.Threading.Thread.Sleep(10);
-
//прекращаем уменьшать размеры формы
-
if
(width == 432) {
-
break
;
-
}
-
}
-
}
-
}
}