我有一个文本块和几个按钮 我想做的是查看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" };
现在在所有按钮的点击事件中,我可以检查,而最后一个字符是'电源',所以按下的下一个数字按钮也将一直有电,直到按下任何其他键,如+, - 被按下.... 我希望我清楚自己......对不起,如果我是新的那样
答案 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";
}