我有一个带有拖放选项的列表视图到文本框。 我需要禁用在列表框中使用 CTRL + C 或 CTRL + X 的功能。 我不希望它被键盘触发。是否可以选择在WPF中阻止它?
<ListBox x:Name="Lst" IsSelected="False" Height="115" Width="150" ItemsSource="{Binding UsCollectionView}"
SelectionChanged="listbox_SelectionChanged" AllowDrop="True" PreviewDrop="ListBox_PreviewDrop"
</ListBox>
private void listbox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (sender is ListBox)
{
var listBox = sender as ListBox;
if (e.AddedItems.Count == 1)
{
if (listBox.SelectedItem != null)
{
var mySelectedItem = listBox.SelectedItem as User;
if (mySelectedItem != null)
{
DragDrop.DoDragDrop(listBox, mySelectedItem.Name, DragDropEffects.Copy | DragDropEffects.Move);
}
}
}
}
}
答案 0 :(得分:0)
有很多方法可以做到这一点。一种方法是处理UIElement.PreviewKeyDown
Event,检测相关密钥,然后将e.Handled
属性设置为true
:
private void ListBoxPreviewKeyDown(object sender, KeyEventArgs e)
{
if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
// Ctrl Key is pressed
if (e.Key == Key.C || e.Key == Key.X) e.Handled = true;
}
}