получение приложения формы windows, написанного в C# текстовом поле для вывода текста, который вы хотите - PullRequest
0 голосов
/ 27 мая 2020

В моем приложении пользователь выберет тип материала, например сталь / нержавеющая сталь, в ComboBox, выберет тип сверла (например, faststeel) в другом ComboBox и диаметр сверла в NumericUpDown. После этого текстовое поле RPM должно отображать автоматически рассчитанное число оборотов в минуту.

Прямо сейчас текстовое поле RPM остается пустым, пока я не щелкну по нему и не изменю значение.

namespace BoorCalc
{
    public partial class boorCalcForm : Form
    {
        public string materiaal;
        public string soortboor;
        public decimal diameter;
        decimal VC;
        string RPM;


        public boorCalcForm()
        {
            InitializeComponent();
        }             

        public void boorCalcForm_Load(object sender, EventArgs e)
        {       

        }  

        public void materiaalDropBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            materiaal = materiaalDropBox.Text;                 
        }

        public void soortBoorDropBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            soortboor = soortBoorDropBox.Text;                
        }

        public void diameterValue_ValueChanged(object sender, EventArgs e)
        {
            diameter = diameterValue.Value;                       
        }

        public void toerentalValue_TextChanged(object sender, EventArgs e)
        {
            if (materiaal == "RVS")
            {
                VC = 318 * 30;
                RPM = Convert.ToString(VC / diameter);
            }
                toerentalValue.Text =  RPM;
        }
     }

}

Как изменить свой код чтобы текстовое поле RPM сразу отображало рассчитанное число оборотов в минуту, не нажимая на него.

1 Ответ

1 голос
/ 28 мая 2020

Ваш toerentalValue.Text обновляется только на toerentalValue_TextChanged. Если вы хотите, чтобы он обновлялся при изменении диаметра, запустите / вызовите расчет для DiameterValue_ValueChanged. Очень грязное решение:

public void diameterValue_ValueChanged(object sender, EventArgs e)
{
    diameter = diameterValue.Value;
    toerentalValue_TextChanged(sender, e);           
}

Лучшее решение - обобщить и разделить вычисления в другом месте, чтобы не смешивать UI и logi c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...