如何在TextBox(WinRT)中阻止粘贴文本?

时间:2013-06-11 06:03:15

标签: windows-8 textbox windows-runtime copy-paste

你能帮我解决一下我的问题吗?我想阻止我的文本框粘贴并控制所有字符都是数字(WinRT)。

4 个答案:

答案 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; }
  1. 阻止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; 
            }                       
        }
    
  2. 要仅允许数字字符,您必须在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阻止整个段落。向上移动或侧向箭头以阻止小部件。右键单击被阻止的段落以“复制”并粘贴。