Исключение StackOverflow при запуске программы - C#
Формулировка задачи:
Для курсовой работы задали написать программу на C# с помощью WindowsForms. После того, как запускаю программу и нажимаю на кнопку под наименованием "Прийняти" программа виснет, и вылазит следующее.
Вот код из class1
А вот код Form1
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace WindowsFormsApplication1
- {
- class Mechanism
- {
- public double Rk
- {
- set { if (value > 0) Rk = value; }
- get { return Rk; }
- }
- public double Dk
- {
- set { if (value > 0) Dk = value; }
- get { return Dk; }
- }
- public double h
- {
- set { if (value > 0) h = value; }
- get { return h; }
- }
- public double Lk
- {
- set { if (value > 0) Lk = value; }
- get { return Lk; }
- }
- public void recalculate()
- {
- Dk = 2 * Rk + 10;
- Lk = Rk + h + 50;
- }
- public void SetInitialData()
- {
- Rk = 120;
- h = 5;
- recalculate();
- }
- public void checkData(double Rk, double h, out string code, out string Message, out double value)
- {
- Message = " "; // Повідомлення про результат перевірки
- value = 0; // нове значення некоректного параметра(якщо такий буде знайдено
- if ((Rk < 120) || (Rk > 160)) //умова перевірки
- {
- Message = " Значення повинне бути в межах від 120 до 160 мм!";
- code = "Rk"; // некоректний параметр
- value = 120; // коректне значення
- }
- else
- if ((h < 5) || (h > 8))
- {
- Message = " Значення повинне бути в межах від 5 до 8 мм!";
- code = "h";
- value = 5;
- }
- else
- {
- Message = "Вхідні дані - коректні!";
- code = "";
- recalculate();
- }
- }
- }
- }
Листинг программы
- 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 WindowsFormsApplication1
- {
- public partial class Form1 : Form
- {
- Mechanism MyMech;
- public Form1()
- {
- InitializeComponent();
- MyMech = new Mechanism();
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- }
- private void label2_Click(object sender, EventArgs e)
- {
- }
- private void label3_Click(object sender, EventArgs e)
- {
- }
- private void label8_Click(object sender, EventArgs e)
- {
- }
- private void textBoxRk_Leave(object sender, EventArgs e)
- {
- txtBox_Leave(textBoxRk, Convert.ToString(MyMech.Rk));
- }
- private void textBoxh_Leave(object sender, EventArgs e)
- {
- txtBox_Leave(textBoxh, Convert.ToString(MyMech.h));
- }
- private void txtBox_Leave(TextBox txtBox, string value)
- {
- try
- {
- Convert.ToDouble(txtBox.Text); // спроба конвертувати текст в число
- }
- catch // у випадку виникнення помилки
- {
- MessageBox.Show("Введіть число!"); // виведення повідомлення
- txtBox.Text = value; // встановлення заданого значення
- txtBox.Focus(); // повернення фокусу в поле введення
- }
- }
- private void buttonApply_Click(object sender, EventArgs e)
- {
- double Rk = Convert.ToDouble(textBoxRk.Text);
- double h = Convert.ToDouble(textBoxh.Text);
- string Message, code; double value;
- MyMech.checkData(Rk, h, out code, out Message, out value);
- MessageBox.Show(Message);// виведення повідомлення користувачу
- // встановлення курсору в помилкове поле і виведення допустимого значення
- switch (code)
- {
- case "Rk": textBoxRk.Focus(); textBoxRk.Text = Convert.ToString(value); break;
- case "h": textBoxh.Focus(); textBoxh.Text = Convert.ToString(value); break;
- }
- textBoxDk.Text = Convert.ToString(MyMech.Dk);
- textBoxLk.Text = Convert.ToString(MyMech.Lk);
- }
- }
- }
Решение задачи: «Исключение StackOverflow при запуске программы»
textual
Листинг программы
- class Mechanism
- {
- private double rk;
- public double Rk
- {
- set { if (value > 0) rk = value; }
- get { return rk; }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д