0

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

这就是我所做的

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

现在在所有按钮的单击事件中,我可以在最后一个字符处于“电源”状态时进行检查,因此按下的下一个数字按钮也将处于电源状态,直到按下任何其他键(如 +,-)......我希望我自己清楚..对不起,如果我有点新

4

1 回答 1

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";
        }
于 2012-10-01T10:15:57.477 回答