Исключение 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; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д