C# 使用“更改浮点值”;选择的组合框“更改”;

C# 使用“更改浮点值”;选择的组合框“更改”;,c#,if-statement,combobox,C#,If Statement,Combobox,我试图通过带有if语句的组合框来更改浮点值 Id不必是if语句,但我认为这是最符合逻辑的方法 但是,当我尝试使用组合框上选定的更改中的if语句更改浮点值时,会出现名称空间错误和定义错误 我希望它能反映程序中稍后的一个公式,超出范围,因此浮动会根据他们在下拉列表中选择的内容进行更改 我的“如果”陈述 public void cmbSubClass_SelectedIndexChanged(object sender, EventArgs e) { if (c

我试图通过带有if语句的组合框来更改浮点值

Id不必是if语句,但我认为这是最符合逻辑的方法

但是,当我尝试使用组合框上选定的更改中的if语句更改浮点值时,会出现名称空间错误和定义错误

我希望它能反映程序中稍后的一个公式,超出范围,因此浮动会根据他们在下拉列表中选择的内容进行更改

我的“如果”陈述

public void cmbSubClass_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbSubClass.SelectedIndex == 1)
            {

               public float a = 0.86F; 
               public float b = 0.61F;
               public float c = 1.86F;  
            }
            if (cmbSubClass.SelectedIndex == 2)
            {
               public float a = 0.64F;
               public float b = 0.75F;
               public float c = 1.42F; 
            }
        }
公式示例:

float zFormula = (a * val1) + (b * val2) + (c * val3)
textbox1.Text = Convert.ToString(zFormula);
我试图用一个类复制同样的东西,但我似乎不知道怎么做。

可能类似这样(使用绑定):

公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
列表数据=新列表();
添加(新数据(“Set1”、1、2、3”);
添加(新数据(“Set2”,3,2,3));
comboBox1.DataSource=数据;
comboBox1.DisplayMember=“Name”;
}
私有无效组合框1\u SelectedIndexChanged(对象发送方,事件参数e)
{
var set=comboBox1.SelectedValue作为数据;
var val1=1;
float zFormula=(set.A*val1)+(set.B*val1)+(set.C*val1);
textbox1.Text=Convert.ToString(zFormula);
}
}
公共类数据
{
公共数据(字符串名称、浮点a、浮点b、浮点c)
{
名称=名称;
A=A;B=B;C=C;
}
公共字符串名称{get;protected set;}
公共浮点A{get;protected set;}
公共浮点B{get;protected set;}
公共浮点C{get;protected set;}
}

声明和设置变量是两件不同的事情

在@LarsTech说

        public float a;
        public float b;
        public float c;
        public float d;
        public float f;

        public void cmbSubClass_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbSubClass.SelectedIndex == 0)
            {
                txtOutput.Text = ("class1 selected");
                a = 1.12F;
                b = 2.32F;
                c = 3.32F;
                d = 4.31F;
                f = 5.23F;

            }
            if (cmbSubClass.SelectedIndex == 1)
            {
                txtOutput.Text = ("class2 selected");
                a = 0.01F;
                b = 0.21F;
                c = 0.23F;
                d = 0.75F;
                f = 1.66F;
            }
            if (cmbSubClass.SelectedIndex == 2)
            {
                txtOutput.Text = ("class3 selected");
                a = 1.02F;
                b = 1.22F;
                c = 1.42F;
                d = 1.62F;
                f = 1.32F;

            }
        }

问题解决了

我收到大量错误…
然后你不告诉我们错误?不要在If块中声明变量-它们仅限于该代码块。这意味着它会破坏代码,不会出现“1”错误。它只是说当前上下文中不存在任何内容,或者没有任何内容包含定义。即使它是公共的,它也会被锁在街区里?那么,如何更改组合框选择的值呢?声明和设置变量是两件不同的事情。移动
公共浮动aetc位于SelectedIndexChanged行上方。
声明和设置变量是两件不同的事情。
完美,修复了它。)谢谢。建议使用Michal Zych答案而不是硬编码索引。如果您决定将
Sorted
属性设置为
true
,那么您的代码将无法工作;如果您决定更改可用值列表,那么代码将非常脆弱,因为如果您忘记更新所有代码,您很容易失去同步。
        public float a;
        public float b;
        public float c;
        public float d;
        public float f;

        public void cmbSubClass_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbSubClass.SelectedIndex == 0)
            {
                txtOutput.Text = ("class1 selected");
                a = 1.12F;
                b = 2.32F;
                c = 3.32F;
                d = 4.31F;
                f = 5.23F;

            }
            if (cmbSubClass.SelectedIndex == 1)
            {
                txtOutput.Text = ("class2 selected");
                a = 0.01F;
                b = 0.21F;
                c = 0.23F;
                d = 0.75F;
                f = 1.66F;
            }
            if (cmbSubClass.SelectedIndex == 2)
            {
                txtOutput.Text = ("class3 selected");
                a = 1.02F;
                b = 1.22F;
                c = 1.42F;
                d = 1.62F;
                f = 1.32F;

            }
        }