2012-10-01 2 views
0

나는 텍스트 블록과 몇 개의 단추가 있습니다. 내가하고 싶은 것은 textblock의 마지막 문자가^ 인지 확인하는 것입니다. 첨자 여기 C에서 다른 키 누르기 이벤트 내에서 누른 키를 처리하는 방법 #

내가
private void buttonxn_Click(object sender, RoutedEventArgs e) 
    { 
     textBlock1.Text = textBlock1.Text + "x^"; 

    } 

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     int len=textBlock1.Text.Length; 
     string x = textBlock1.Text.Substring(len-1, 1); 
     if(x=="^") 
     { 
      textBlock1.Text = textBlock1.Text + "\x2070"; 
     } 

     else 
      textBlock1.Text = textBlock1.Text + "1"; 
    } 

무엇을했는지하지만 전원 등에는 적용 할 수 있도록하는 방법을 한 자리 경우에만 도움이 X^12 내가 문자열을 만들려고 노력했다 그것에 대해 다른 뭔가 및 확인

 string power ={ "\x2070", "\x00b9", "\x00b2", "\x00b3", "\x2074", "\x2075", "\x2076", "\x2077", "\x2078", "\x2079" }; 

이제 모든 버튼의 클릭 이벤트에서 마지막 문자가 '전원'에있는 동안 확인할 수 있으므로 +, - 같은 다른 키가 눌러 질 때까지 다음 숫자 버튼이 눌러집니다. 나는 내가 분명히했으면 좋겠어.. 오히려 새로운 것이라면 미안.

+0

아무도 도와 줄 수 있습니까? – goldsmit409

답변

1

당신이 원하는 것은 당신의 UI에서 당신의 현재 응용 프로그램 상태를 분리하는 것이다. 이 코드는 단순화 된 예제이지만이 작업을 수행하는 패턴 (MVC, MVP, MVVM)을 살펴 보는 것이 좋습니다. 이러한 패턴을 사용하는 것은 매우 작은 응용 프로그램의 경우 대부분 잔인하며, 그로부터 배울 수있는 것은 꽤 깔끔합니다. 기본적으로 다른 버튼의 동작에 영향을주는 경우 특정 버튼의 상태를 전환하려고합니다. 이 예에서 +/- 버튼은 기본값으로 다시 전환됩니다.

 public enum EntryState 
     { 
      Default, 
      Power 
     } 

     private EntryState _state = EntryState.Default; 

     private void buttonxn_Click(object sender, RoutedEventArgs e) 
     { 
      textBlock1.Text = textBlock1.Text + "x^"; 
      _state = EntryState.Power; 
     } 

     private void button1_Click(object sender, RoutedEventArgs e) 
     { 
      if (_state == EntryState.Power) 
       textBlock1.Text = textBlock1.Text + "\x2070"; 
      else 
       textBlock1.Text = textBlock1.Text + "1"; 
     } 
+0

많은 도움을 주셔서 감사합니다 .... – goldsmit409

관련 문제