如何使用复选框事件?
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
事件,例如 Checked
或 Unchecked
。但是,这只会在您检查 CheckBox
时将文本转换为大写,之后输入的所有内容仍然是小写。一个解决方案是使用 TextBox
的 TextChanged
事件,它会在您键入时转换文本。
我创建了以下 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
事件,例如 Checked
或 Unchecked
。但是,这只会在您检查 CheckBox
时将文本转换为大写,之后输入的所有内容仍然是小写。一个解决方案是使用 TextBox
的 TextChanged
事件,它会在您键入时转换文本。