你能帮我解决一下我的问题吗?我想阻止我的文本框粘贴并控制所有字符都是数字(WinRT)。
答案 0 :(得分:2)
从Windows 8.1开始,您将收到可以订阅的“粘贴”事件。只需订阅它并将事件的Handled
属性设置为true
即可阻止它到达TextBox。
答案 1 :(得分:1)
更新1
如果你想阻止 ctrl + c & ctrl + v 组合,然后您必须在KeyDown
事件中检查该组合。如果您获得该组合,则可以使用静态方法Windows.ApplicationModel.DataTransfer.Clipboard.Clear();
如果你不注意键的组合而不是 ctrl ,那么你也可以防止通过键盘复制粘贴。
private void TextBox_KeyDown_1(object sender, KeyRoutedEventArgs e)
{
if (e.Key == Windows.System.VirtualKey.Control)
Windows.ApplicationModel.DataTransfer.Clipboard.Clear();
}
要允许用户仅输入数字数据,您可以使用TextBox
的{{1}}事件。使用仅数字正则表达式过滤掉字符。此外,要禁用TextChanged
的上下文菜单,TextBox
事件将对您有所帮助。以下是整个代码。
XAML
ContextMenuOpening
C#
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<TextBox Height="50" Width="300" TextChanged="TextBox_TextChanged_1" ContextMenuOpening="TextBox_ContextMenuOpening_1" />
</Grid>
答案 2 :(得分:1)
阻止粘贴: 1.将其从粘贴事件中阻止
txtBox1.Paste += ADDTextBox_Paste;
void ADDTextBox_Paste(object sender, TextControlPasteEventArgs e)
{e.Handled = true;return; }
阻止shift + insert和Ctrl + V的Keydown事件。
void txtBox1_KeyDown(object sender, KeyRoutedEventArgs e)
{
var shiftState = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Shift);
var ctrlState = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Control);
if (((shiftState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down && e.Key == VirtualKey.Insert)
||((ctrlState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down && e.Key == VirtualKey.V))
{
e.Handled = true;
return;
}
}
要仅允许数字字符,您必须在Keydown事件中添加此代码:
if ((e.Key < VirtualKey.Number0 || e.Key > VirtualKey.Number9) &&
(e.Key < VirtualKey.NumberPad0 || e.Key > VirtualKey.NumberPad9))
{ e.handled = true; return; }
答案 3 :(得分:-1)
使用Shift A阻止整个段落。向上移动或侧向箭头以阻止小部件。右键单击被阻止的段落以“复制”并粘贴。