2013-10-31 2 views
1

그래서 여기에 주요 아이디어가 있습니다. 저는 계산기를 만들려고합니다. 그 수 또는 피연산자 텍스트 박스 변경에 텍스트를 입력하면 상기계산의 피연산자 절약

private void _1_button_Click(object sender, RoutedEventArgs e) 
    { 
     resultBoxText += "1"; 
     resultBox.Text = resultBoxText; 
    } 
    private void _2_button_Click(object sender, RoutedEventArgs e) 
    { 
     resultBoxText += "2"; 
     resultBox.Text = resultBoxText; 
    } 
    private void _3_button_Click(object sender, RoutedEventArgs e) 
    { 
     resultBoxText += "3"; 
     resultBox.Text = resultBoxText; 
    } 
    private void plus_button_Click(object sender, RoutedEventArgs e) 
    { 
     resultBoxText += "+"; 
     resultBox.Text = resultBoxText; 
    } 

    private void minus_button_Click(object sender, RoutedEventArgs e) 
    { 
     resultBoxText += "-"; 
     resultBox.Text = resultBoxText; 
    } 

코드는 사용자이다. 이제 실제 계산을 어떻게해야합니까? 별도의 함수 (인수 포함)? 은 모든 피연산자에 대해 하나의 변수이거나 배열을 만들어야합니까? 어떻게 입력을 함께하면 그들을 추가합니까? 예 : "2"를 누른 다음 "+"를 누른 다음 "3"을 눌러 결과에서 어떻게 모으나요? 시작하는 방법을 모르겠습니다./

+0

오. 여기서 벌레를 열 수 있습니다. 팁 : 시작할 때 사용할 수있는 아주 작은 입력 집합으로 제한하십시오 (작은 문법). – AndyG

+0

이 코드를 더 짧게 만들겠습니까? – Athomield

+0

내가 말하는 것은 당신이 계산기를 아주 작은 부분 집합으로 제한해야한다는 것입니다. a + b, a - b, a * b, a/b 일 수 있습니다. 그런 다음 괄호로 복잡한 표현을 구문 분석하고 조작 순서를 걱정할 필요가 없습니다. – AndyG

답변

0

1,2,3,4를 추가/빼기 만하면 한 변수만으로 충분합니다. 이벤트 핸들러에서 모든 필요한 계산을 바로 수행하십시오.

+0

글쎄, 나는 그것들을 위해서만가는 것이 아니라, 이것들은 초보자이다. – Athomield

0

최근에 똑같은 일을 시도했습니다. 놀랍게도 다음과 같은 간단한 해결책을 생각해 냈습니다. 우선, COM 라이브러리의 참조 번호 MSScriptControl (how to add and remove references in VS)을 추가하십시오. 그런 다음, 모든 숫자 버튼을 클릭 이벤트 후 : 코드의

private void equals_button_Click(object sender, RoutedEventArgs e) 
{ 
    MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControl(); 
    sc.Language = "VBScript"; 
    //Using try catch statement just in case a user enters an invalid expression. 
    //This becomes more useful when the application gets more advanced. 
    try 
    { 
     object result = sc.Eval(resultBoxText); 
     //Output the result somehow. E.g.: resultBox.Text = result.ToString(); 
    } 
    catch 
    { 
     MessageBox.Show("Invalid expression!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
    } 
} 

그냥이 작은 양 등 7 * 9 "로 문자열을 수행 할 수 있습니다

private void _1_button_Click(object sender, RoutedEventArgs e) 
{ 
    resultBoxText += "1"; 
    resultBox.Text = resultBoxText; 
} 
private void _2_button_Click(object sender, RoutedEventArgs e) 
{ 
    resultBoxText += "2"; 
    resultBox.Text = resultBoxText; 
} 
private void _3_button_Click(object sender, RoutedEventArgs e) 
{ 
    resultBoxText += "3"; 
    resultBox.Text = resultBoxText; 
} 
private void plus_button_Click(object sender, RoutedEventArgs e) 
{ 
    resultBoxText += "+"; 
    resultBox.Text = resultBoxText; 
} 

private void minus_button_Click(object sender, RoutedEventArgs e) 
{ 
    resultBoxText += "-"; 
    resultBox.Text = resultBoxText; 
} 

이 당신을 위해 몇 가지 코드를 넣어 버튼과 동일 6 + 3/6 "이고 올바른 답은"57.5 "입니다. 그러나 내가 언급해야 할 한 가지는 "1 (1)"과 같은 문자열을 제대로 처리 할 수없는 방법입니다. 기술적으로 "1 * 1"로 표시해야하지만 오류가 발생합니다. 그래서, 나는 그것을 해결하기 위해 약간의 코딩을해야했습니다. 하지만 당신이 그 다리에 올 때 그 다리를 건너도록 내버려 둘 것입니다. :)

내가 추가 할 수있는 한 가지 : 숫자 버튼에 모두 "1"또는 "2"또는 "+" "라고 말하면 큰 금액으로 버튼 클릭 수를 집계 할 수 있습니다. 금액입니다. 클릭 할 때마다

private void num_button_click(object sender, RoutedEventArgs e) 
{ 
    Button b = (Button)sender; 
    resultBoxText += b.Text; 
    resultBox.Text = resultBoxText; 
} 

그런 다음 모든 당신의 숫자 버튼은 num_button_click 코드를 참조하십시오. 이것은 모든 조작자 버튼 ("+")에서도 작동합니다.

버튼에 "click for one"과 같은 텍스트가 포함 된 경우 원래 코드를 그대로 사용하십시오. 나를 무시하십시오.

그리고 모든 클릭 이벤트에 RoutedEventArgs이 있다는 것을 알았습니다. WPF를 사용하고 있습니까? 나는 그것이 winforms라고 가정했다. 음, 어쨌든, 코드는 여전히 작동해야합니다 ... 나는 그것이 당신이 찾고있는 것이기를 바랍니다.