C# 如何使用文本框中的用户输入设置图表区域Y轴最小最大值的谜题

C# 如何使用文本框中的用户输入设置图表区域Y轴最小最大值的谜题,c#,charts,textbox,C#,Charts,Textbox,我有一个WinForm应用程序的图表,它显示了几种系列的线型。 但序列Y轴上的点,值仅沿X轴改变1。因此,为了从Y轴上删除空的未使用空间,我放置了2个文本框,让用户能够更改它的最小最大值,并使Y轴的值更详细 但是手动改变轴的最小最大值带来了一个我无法完全解开的谜团 我明白,为了让程序不崩溃 +程序应检查Y-min和Y-max文本框是否为空, +程序应检查输入的值是否为双精度值,而不是字符串, +程序应检查输入的或当前的Y-max值是否大于输入的或当前的Y-min值, +程序应检查输入的或当前的Y

我有一个WinForm应用程序的图表,它显示了几种系列的线型。 但序列Y轴上的点,值仅沿X轴改变1。因此,为了从Y轴上删除空的未使用空间,我放置了2个文本框,让用户能够更改它的最小最大值,并使Y轴的值更详细

但是手动改变轴的最小最大值带来了一个我无法完全解开的谜团

我明白,为了让程序不崩溃
+程序应检查Y-min和Y-max文本框是否为空,
+程序应检查输入的值是否为双精度值,而不是字符串,
+程序应检查输入的或当前的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;
            }
        }    
    }
private void BtnBenchApply_单击(对象发送者,事件参数e)
{
双yMin=0;
双yMax=0;
双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);
}
其他的
{

if(!(string.IsNullOrWhiteSpace(txtYmax.Text))&&(yMax您遇到了什么崩溃?还有:为什么麻烦?默认值将自动调整图表区域以充分利用空间。-还有:我将解析出值,然后进行检查并最终设置值。这很难做到。您是否使用调试器查看代码执行的分支?还有:第一个条件n似乎完全错了。(将
&&
替换为
|
或将
拉入两个表达式!)使用此代码段,如果Y-max文本框为空,程序将进入messagebox if,并且不应用最小值更改。chartarea不会自动调整,尽管所有Y轴值都在144-146之间,但Y-max的自动值为160,而Y-min的自动值为-20。如果我能使其自动调整到系列min-最大值,我会接受。我怎么做?默认情况下会发生,但如果您在某处将数字设置为axis.Minimum等,您可以这样重置:
axis.Minimum=double.NaN
。-另外:发布的代码格式不正确,因此很难遵循。
else
属于第二个
if
和第一个
if没有
else`。缩进说明不是这样。请检查打字错误!很抱歉代码调整。我后来在发布后看到了。因此,如果我在为图表定义序列后调用
axis.Minimum=double.NaN
,它将调整Y轴?(当然还有
axis.Maximum=double.NaN
)为什么不使用一个文本框,只使用您正在绘制的图表的实际值呢?保留序列中y轴上的最低值和最高值,并从中设置yMin和yMax。