如何处理在c#中的另一个键击事件中按下的键

时间:2012-10-01 06:08:30

标签: c# wpf c#-4.0

我有一个文本块和几个按钮 我想做的是查看textblock中的最后一个字符是否为^ 如果是这样,我希望下一个所有数字都用上标

这就是我做的事情

  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" };

现在在所有按钮的点击事件中,我可以检查,而最后一个字符是'电源',所以按下的下一个数字按钮也将一直有电,直到按下任何其他键,如+, - 被按下.... 我希望我清楚自己......对不起,如果我是新的那样

1 个答案:

答案 0 :(得分: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";
        }