Рассмотрим приложение на вычисление правильного n-угольника.
Периметр p правильного n-угольника,
описанного около окружности радиуса r, равен 2*n*r*tg(PI/n). Ввести значения n
и r, проверить их корректность и вывести значение периметра. Проверяемые
условия: n >= 3 и r > 0; отсутствие во входной строке не цифровых данных.
Размещение управляющий элементов на форме
выполнить в относительных координатах. Ввести ограничения на минимизацию формы.
(Изображения элементов не должны «налезать» друг на друга при уменьшении
размеров формы.)
Разместите на форме элементы управления Lable1, Lable2, TextBox1, TextBox2, TextBox3, Button1 Button2.
Задайте свойства: Form1: Text = Периметр правильного
n-угольника
Font.Bold = True
StartPosition = CenterScreen
label1 Text = Число сторон многоугольника
Font.Bold
= True
label2 Text = Радиус вписанной окружности
Font.Bold
= True
button1: Text
= Проверить данные:
Font.Bold = True
button1: Text
= Вычислить периметр:
Font.Bold = True
textbox1, textbox2, textbox3: Multiline = false
Font.Bold = True
Решение Solution_3_2
namespace WinProgram_2_1 {
public partial
class Form1 : Form {
public
Form1() {
InitializeComponent( );
textBox3.ReadOnly = true; // не разрешаем внешних изменений
button2.Enabled = false; // блокируем кнопку
}
//.. поля
объекта класса Form1:
int n;
double r, p;
int dx,
dy;
private void Form1_Load(object sender, EventArgs e) {
this.MinimumSize
= new Size (label2.Size.Width +
8*textBox2.Size.Width/3 + label2.Location.X,
label1.Size.Height + label2.Size.Height +
5*button1.Size.Height/2 + 5*button2.Size.Height/2);
}
private void
Form1_Paint(object sender, PaintEventArgs e) {
dx = this.ClientSize.Width;
dy = this.ClientSize.Height;
label1.Location = new Point(dx /10, dy/10);
label2.Location = new Point(dx /10, dy/4);
textBox1.Location = new Point(2*dx /3, dy/10);//устанавливаем местоположение для окна
ввода информации 1
textBox2.Location = new Point(2*dx /3, dy/4); //устанавливаем местоположение для окна
ввода информации 2
button1.Location = new Point(dx/10,dy/2);//задаем местоположение для кнопки 1
button2.Location = new Point(dx/10,2*dy/3); //задаем местоположение для кнопки 2
textBox3.Location = new Point(2*dx /3, 2*dy/3);/*x
и y отсчитываются
относительно левого верхнего угла формы.
х -
отсчитывается вправо от него начиная от значения 0
у -
отсчитывается вниз от него начиная от значения 0 */
}
private void
Form1_Resize(object sender, EventArgs e) {
Refresh();
}
//.. обработчик кнопки:
private void
button1_Click(object sender, EventArgs e) {
while
(!int.TryParse(textBox1.Text, out n)|n < 3)
{
MessageBox.Show("Ошибка
в данных!");
textBox1.Focus();//устанавливаем
курсор на textbox1
return;
}
while
(!double.TryParse(textBox2.Text, out r)|r<=0)
{
MessageBox.Show("Ошибка в
данных!");
textBox2.Focus();
return;
}
button2.Enabled = true;
textBox3.Text = "";
}
//.. обработчик кнопки:
private void
button2_Click(object sender, EventArgs e) {
p = 2
* n * r * Math.Tan(Math.PI / n);
textBox3.Text = String.Format("{0:g5}", p);
}
private void
textBox1_TextChanged(object sender, EventArgs e)
//при
изменении текста в окне ввода button2 отключаем
{
button2.Enabled = false;
}
private void
textBox2_TextChanged(object sender, EventArgs e)
//при
изменении текста в окне ввода button2 отключаем
{
button2.Enabled = false;
}
}
}