2017-01-30 18 views
0

フロート値を変更するには、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; 
      } 
     } 

式の例 "IF":「

float zFormula = (a * val1) + (b * val2) + (c * val3) 
textbox1.Text = Convert.ToString(zFormula); 

は、私はクラスと同じものを複製しようとしましたが、私はすることができますどのようにそれを行うかを理解しているようです。

+0

「私は大量のエラーが発生します...」そして、エラーを教えてください。 Ifブロック内に変数を宣言しないでください。これらの変数は、そのブロックだけに制限されています。 – LarsTech

+0

は、コードが壊れていることを意味し、 "1"エラーはありません。現在のコンテキストには何も存在しない、または何も定義されていないということだけです。 公開されていてもブロックにロックされますか?どのようにしてコンボボックスの値を変更するのですか? – Mokey

+0

変数の宣言と設定は2つの異なるものです。 SelectedIndexChanged行の上に 'public float a;'などを移動します。 – LarsTech

答えて

1

多分(バインディングを使用して)このような何か:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     List<Data> data = new List<Data>(); 
     data.Add(new Data("Set1", 1, 2, 3)); 
     data.Add(new Data("Set2", 3, 2, 3)); 
     comboBox1.DataSource = data; 
     comboBox1.DisplayMember = "Name"; 
    } 

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     var set = comboBox1.SelectedValue as Data; 
     var val1 = 1; 
     float zFormula = (set.A * val1) + (set.B * val1) + (set.C * val1); 
     textbox1.Text = Convert.ToString(zFormula); 
    } 
} 

public class Data 
{ 
    public Data(string name, float a, float b, float c) 
    { 
     Name = name; 
     A = a; B = b; C = c; 
    } 

    public string Name { get; protected set; } 
    public float A { get; protected set; } 
    public float B { get; protected set; } 
    public float C { get; protected set; } 
} 
0

は変数を宣言して設定するには、二つの異なるものです。 @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; 

      } 
     } 

問題が解決...と言った後

は、これは完璧な意味を成していました。

関連する問題