Загадка, как установить минимальные и максимальные значения ChartArea по оси Y с пользовательским вводом из текстовых полей - PullRequest
0 голосов
/ 03 октября 2019

У меня есть диаграмма для приложения WinForm, которая показывает несколько типов линий ряда. Но точки на оси Y ряда, значения меняются только на 1 вдоль оси X. Таким образом, чтобы удалить пустое неиспользуемое пространство из оси Y, я поместил 2 текстовых поля, чтобы дать возможность пользователю изменять его значения Min-Max и сделать значения оси Y более детальными.

Но это ручное изменение значений min-max оси приносит загадку, которую я не мог полностью решить.

Я понимаю, чтобы программа не вызывала сбой;
+ программадолжен проверить, являются ли текстовые поля Y-min, Y-max пустыми,
+ программа должна проверить, являются ли введенные значения на самом деле значениями типа double, а не строками,
+ программа должна проверить, больше ли введенное или текущее значение Y-maxчем введенное или текущее значение Y-min,
+ программа должна проверить, является ли введенное или текущее значение Y-max меньше введенного или текущего значения Y-max.

Я пробовал несколько подходов, но не смог 'не решить эту загадку полностью. Вот одна версия;

 private void BtnBenchApply_Click(object sender, EventArgs e)
 {
   double yMin = 0;
   double yMax = 0;
   double n;

   if (!(string.IsNullOrWhiteSpace(txtYmin.Text)) && double.TryParse(txtYmin.Text, out n) == true)
        {
            yMin = double.Parse(txtYmin.Text);
        }
   if (!(string.IsNullOrWhiteSpace(txtYmax.Text)) && double.TryParse(txtYmax.Text, out n) == true)
        {
            yMax = double.Parse(txtYmax.Text);
        }

   else
        {
            if (!(string.IsNullOrWhiteSpace(txtYmax.Text)) && (yMax <= yMin))
            {
                MessageBox.Show("Please check Min-Max values!", "Invalid Action", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }

            else
            {
                chartBench.ChartAreas[0].AxisY.Maximum = yMax;
                chartBench.ChartAreas[0].AxisY.Minimum = yMin;
            }
        }    
    }

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

...