2017-07-31 9 views
0

電卓は正しく機能するようになっていますが、コードがはるかに乱雑であると判断し、整理してベストプラクティスを見つける必要がありました私はYouTubeでいくつかの動画を見て見つけたと思った。C#電卓は、数学的演算子をテキストボックスに表示することができません

残念ながら、この新しい方法で画面にオペレータを表示させることはできません(たとえば、 '6'を押すと6が表示されますが、 '+'を押すと何も起こりませんオペレータを挿入できない場合は、等価ボタンが機能しているかどうかを確認できません)

このコードは以下のとおりです。

Double value = 0; 
String operation = ""; 
//bool op_pressed = false; 

public MainForm() 
{ 
    InitializeComponent(); 
} 

public void button_click(object sender, EventArgs e) 
{ 
    Button button = (Button)sender; 
    textBox1.Text = textBox1.Text + button.Text; 
} 

public void op_click(object sender, EventArgs e) 
{ 
    Button button = (Button)sender; 
    operation = button.Text; 
    value = Double.Parse(textBox1.Text); 
    //op_pressed = true; 
} 

public void ClearClick(object sender, EventArgs e) 
{ 
    textBox1.Text = ""; 
} 

private void EqualClick(object sender, EventArgs e) 
{ 
    switch(operation) 
    { 
     case "+": 
      textBox1.Text = (value + Double.Parse(textBox1.Text)).ToString(); 
      break; 
     case "-": 
      textBox1.Text = (value - Double.Parse(textBox1.Text)).ToString(); 
      break; 
     case "/": 
      textBox1.Text = (value/Double.Parse(textBox1.Text)).ToString(); 
      break; 
     case "*": 
      textBox1.Text = (value * Double.Parse(textBox1.Text)).ToString(); 
      break; 
     default: 
      break; 
    } 
    //op_pressed = false; 
} 
+1

オペレータがop_clickイベントを購読していると仮定します。このイベントは、テキストボックスの値を決して変更しません。 –

+2

また、追加情報を追加するだけで再投稿しないでください。これが編集ボタンのためのものです。 –

+0

あなたの質問には、あなたが[以前に投稿した](https://stackoverflow.com/questions/45401950/i-have-created-ac-sharp-calculator-and-tried-to-clean)と同じ脆弱性がほとんどあります。 -up-the-versio-from-versio)を使用します。コード例は[mcve]ではなく、オペレータボタンがクリックされたときに「何も起こらない」という主張は具体的ではありません。確かに_何かが起こる。たとえば、(以前は)イベントハンドラが登録されていると主張しました。そうであれば、イベントハンドラが呼び出されます。それは何かです。あなたの投稿をもう一度削除しないでください。良い質問であるように編集してください。 –

答えて

0

"op_click"メソッドは、textbox1.textに演算子を追加していません。それがなぜ表示されないのですか。

関連する問題