我希望你是我独家记忆

一段永远封存的记忆,随风而去
posts - 263, comments - 31, trackbacks - 0, articles - 3
   :: 首页 :: 新随笔 ::  :: 聚合  :: 管理

自定义键盘快捷键

Posted on 2010-11-29 16:55 Hero 阅读(679) 评论(0)  编辑 收藏 引用 所属分类: C#积累
  1using System;
  2using System.Windows;
  3using System.Windows.Controls;
  4using System.Windows.Input;
  5using System.Windows.Media;
  6
  7namespace Petzold.CommandTheMenu
  8{
  9    public class CommandTheMenu : Window
 10    {
 11        TextBlock text;
 12
 13        [STAThread]
 14        public static void Main()
 15        {
 16            Application app = new Application();
 17            app.Run(new CommandTheMenu());
 18        }

 19        public CommandTheMenu()
 20        {
 21            Title = "Command the Menu";
 22
 23            // Create DockPanel.
 24            DockPanel dock = new DockPanel();
 25            Content = dock;
 26
 27            // Create Menu docked at top.
 28            Menu menu = new Menu();
 29            dock.Children.Add(menu);
 30            DockPanel.SetDock(menu, Dock.Top);
 31
 32            // Create TextBlock filling the rest.
 33            text = new TextBlock();
 34            text.Text = "Sample clipboard text";
 35            text.HorizontalAlignment = HorizontalAlignment.Center;
 36            text.VerticalAlignment = VerticalAlignment.Center;
 37            text.FontSize = 32;     // ie, 24 points
 38            text.TextWrapping = TextWrapping.Wrap;
 39            dock.Children.Add(text);
 40
 41            // Create Edit menu.
 42            MenuItem itemEdit = new MenuItem();
 43            itemEdit.Header = "_Edit";
 44            menu.Items.Add(itemEdit);
 45
 46            // Create items on Edit menu.
 47            MenuItem itemCut = new MenuItem();
 48            itemCut.Header = "Cu_t";
 49            itemCut.Command = ApplicationCommands.Cut;
 50            itemEdit.Items.Add(itemCut);
 51
 52            MenuItem itemCopy = new MenuItem();
 53            itemCopy.Header = "_Copy";
 54            itemCopy.Command = ApplicationCommands.Copy;
 55            itemEdit.Items.Add(itemCopy);
 56
 57            MenuItem itemPaste = new MenuItem();
 58            itemPaste.Header = "_Paste";
 59            itemPaste.Command = ApplicationCommands.Paste;
 60            itemEdit.Items.Add(itemPaste);
 61
 62            MenuItem itemDelete = new MenuItem();
 63            itemDelete.Header = "_Delete";
 64            itemDelete.Command = ApplicationCommands.Delete;
 65            itemEdit.Items.Add(itemDelete);
 66
 67            // Add command bindings to window collection.            
 68            CommandBindings.Add(new CommandBinding(ApplicationCommands.Cut,
 69                                        CutOnExecute, CutCanExecute));
 70            CommandBindings.Add(new CommandBinding(ApplicationCommands.Copy,
 71                                        CopyOnExecute, CutCanExecute));
 72            CommandBindings.Add(new CommandBinding(ApplicationCommands.Paste,
 73                                        PasteOnExecute, PasteCanExecute));
 74            CommandBindings.Add(new CommandBinding(ApplicationCommands.Delete,
 75                                        DeleteOnExecute, CutCanExecute));
 76
 77
 78
 79            添加自定义键盘快捷键
 92        }

 93
 94        void RestoreExecute( object sender, ExecutedRoutedEventArgs e )
 95        {
 96            this.text.Text = "John";
 97        }

 98
 99        void CutCanExecute(object sender, CanExecuteRoutedEventArgs args)
100        {
101            args.CanExecute = text.Text != null && text.Text.Length > 0;
102        }

103        void PasteCanExecute(object sender, CanExecuteRoutedEventArgs args)
104        {
105            args.CanExecute = Clipboard.ContainsText();
106        }

107        void CutOnExecute(object sender, ExecutedRoutedEventArgs args)
108        {
109            ApplicationCommands.Copy.Execute( nullthis );
110            ApplicationCommands.Delete.Execute(nullthis);
111        }

112        void CopyOnExecute(object sender, ExecutedRoutedEventArgs args)
113        {
114            Clipboard.SetText(text.Text);
115        }

116        void PasteOnExecute(object sender, ExecutedRoutedEventArgs args)
117        {
118            text.Text = Clipboard.GetText();
119        }

120        void DeleteOnExecute(object sender, ExecutedRoutedEventArgs args)
121        {
122            text.Text = null;
123        }

124    }

125}

126

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理