如何使用复选框事件?

How do I use checkbox event?

我创建了以下 GUI:

我在 TextBox(图片中的#1)中输入我的文字。我有一个 Button(图片中的#2),它应该将 TextBox 中的输入更改为大写,所以我编写了以下代码:

private void tuUpperCase(object sender, RoutedEventArgs e)
{
    if (crossBox.IsChecked == true)
    {
        machineName.Text.ToUpper();
    }
}

string.ToUpper()不修改字符串,只是returns修改后的字符串。所以你需要将新的修改值设置为 machineName.Text.

private void tuUpperCase(object sender, RoutedEventArgs e)
{
    if (crossBox.IsChecked == true)
    {
        machineName.Text = machineName.Text.ToUpper();
    }
}

ToUpper方法return是新的string,它不会改变machineName.Text属性 .

Returns a copy of this string converted to uppercase.

如果您将其 return 值(新的大写 string)分配给 machineName.Text,它将起作用。

machineName.Text = machineName.Text.ToUpper();

一个问题是当设置新文本时,插入符号位置将被重置。您可以存储 CaretIndex,修改文本,然后重新分配它以保留位置。

private void tuUpperCase(object sender, TextChangedEventArgs e)
{
   if (crossBox.IsChecked == true)
   {
      var caretIndex = machineName.CaretIndex;
      machineName.Text = machineName.Text.ToUpper();
      machineName.CaretIndex = caretIndex;
   }
}

根据您的评论,我假设您使用了 CheckBox 事件,例如 CheckedUnchecked。但是,这只会在您检查 CheckBox 时将文本转换为大写,之后输入的所有内容仍然是小写。一个解决方案是使用 TextBoxTextChanged 事件,它会在您键入时转换文本。