亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Windows > 正文

Windows 8 開發之上下文菜單(右鍵屬性)的應用

2019-11-28 03:37:42
字體:
來源:轉載
供稿:網友

  在程序中,當右鍵單擊某個對象時,會有小小的彈出菜單命令。如果你使用過Windows 8,你可能已經遇見到過上下文菜單了。經常在一些不可以選擇的對象上右鍵單擊,或者在text文本上進行操作時,會出現上下文菜單。什么時候使用上下文菜單,微軟提供了非常詳細的指導,下面將介紹如何實現上下文菜單。

1.確定要顯示上下文菜單的位置

  當我們創建彈出菜單時,首先需要確定出被點擊element所在的位置,然后將位置傳遞給彈出菜單控件。下面的方法是確定element的位置:

復制代碼
代碼如下:

privateRect GetPoint(TextBox box)</p><p> { </p><p>      Rect temp = box.GetRectFromCharacterIndex(box.SelectionStart, false);</p><p>      GeneralTransform transform = box.TransformToVisual(null);</p><p>      Point point = transform.TransformPoint(new Point());</p><p> point.X = point.X + temp.X;</p><p> point.Y = point.Y + temp.Y;</p><p>       return new Rect(point, new Size(temp.Width, temp.Height));</p><p> }

2.創建上下文菜單的選項

  1)為TextBox添加上下文菜單事件

復制代碼
代碼如下:

   protected override void OnNavigatedTo(NavigationEventArgs e)</p><p> {</p><p> InputBox.ContextMenuOpening += InputBox_ContextMenuOpening;    //InputBox是UI層的TextBox控件</p><p> }

  2)當離開這個頁面時移除上下文菜單事件 

復制代碼
代碼如下:

  protected override void OnNavigatedFrom(NavigationEventArgs e)</p><p> {</p><p> InputBox.ContextMenuOpening -= InputBox_ContextMenuOpening;</p><p> }

  3)創建了一個PopupMenu菜單,并添加了一個command,然后調用ShowForSelectionAsync()方法將其顯示出來。

復制代碼
代碼如下:

   async void InputBox_ContextMenuOpening(object sender, ContextMenuEventArgs e)</p><p> {</p><p> e.Handled =true; //來取消原來的調用,然后創建自己的上下文菜單,并在適當的地方調用剪貼板(clipboard)</p><p>     TextBox box = sender as TextBox;</p><p>     PopupMenu menu = new PopupMenu();    //創建PopupMenu菜單</p><p> menu.Commands.Add(new UICommand("復制", null, 0));</p><p> menu.Commands.Add(new UICommand("剪切", null, 1));</p><p> menu.Commands.Add(new UICommand("粘貼", null, 2));</p><p> menu.Commands.Add(new UICommand("全選", null, 3));</p><p> menu.Commands.Add(new UICommand("刪除", null, 4));</p><p> var cmd = await menu.ShowForSelectionAsync(GetPoint(box)); //這里的菜單位置也可以使用 new Rect(e.CursorLeft,e.CursorTop,0,0);   </p><p>    if (cmd != null)</p><p> { </p><p>      string text;</p><p>     DataPackage package;</p><p>       int index=(int)cmd.Id;</p><p>      switch (index)</p><p> {</p><p>        case 0:</p><p>   text = box.SelectedText;</p><p>    package =new DataPackage();</p><p>   package.SetText(text);</p><p>          Clipboard.SetContent(package);</p><p>           break;</p><p>        case 1:</p><p>   text = box.SelectedText;</p><p>   box.SelectedText ="";</p><p>    package =new DataPackage();</p><p>    package.SetText(text); </p><p>           Clipboard.SetContent(package);</p><p>          break;</p><p>       case 2:</p><p>    text =awaitClipboard.GetContent().GetTextAsync();</p><p>    box.SelectedText = text; </p><p>           break;</p><p>       case 3:</p><p>   box.SelectAll();</p><p>         break;</p><p>       case 4:</p><p>   box.SelectedText ="";</p><p>          break;</p><p> }</p><p> }</p><p> }

3.使用另一種方法,實現上下文菜單    

  1)先為TextBox注冊右鍵事件,右鍵事件必須使用下面的方法注冊,在頁面上寫RightTapped事件,是不起作用的。

復制代碼
代碼如下:

   public MainPage()</p><p> {</p><p>      this.InitializeComponent();</p><p> ContentText.AddHandler(RightTappedEvent, new RightTappedEventHandler(ContentText_RightTapped),true);</p><p> }

  2).ContentText_RightTapped方法

復制代碼
代碼如下:

private async void ContentText_RightTapped(object sender, RightTappedRoutedEventArgs e)</p><p>  {</p><p>    //和 InputBox_ContextMenuOpening方法一樣</p><p>  }

  UI層代碼:  

  <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">     

     <TextBox x:Name="InputBox" Margin="100,50,50,660" />

        <TextBox x:Name="ContentText" Margin="100,150,50,50"/>

     </Grid>

  注意:在上下文菜單中,最多可以添加6個command,當添加多余6個command時,會出現錯誤。

  上下文菜單是非常好的方法:特別是為不可選的element提供交互,或者與鄰近的element進行交互。
 

  如需源代碼,點擊ContextMenu_jb51net.zip下載

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频不卡| 影音先锋欧美精品| 久久99视频精品| 国产精品揄拍500视频| 97精品欧美一区二区三区| 亚洲三级 欧美三级| 久久久女女女女999久久| 日本一本a高清免费不卡| 亚洲自拍在线观看| 中文字幕亚洲综合久久筱田步美| 日韩中文字幕av| 日韩欧美在线第一页| 久久久久久999| 国产亚洲精品一区二区| 欧美日韩裸体免费视频| 亚洲女在线观看| 日韩激情第一页| 国产成人一区三区| 亚洲xxxxx电影| 国产精品27p| 国产成人精品久久二区二区| 2019中文字幕全在线观看| 欧美午夜激情小视频| 好吊成人免视频| 精品国产视频在线| 色综合色综合久久综合频道88| 一区二区三区天堂av| 日本高清视频一区| 日本高清视频精品| 69**夜色精品国产69乱| 欧美色播在线播放| 国产精品女主播视频| 久久69精品久久久久久久电影好| 国产成人久久久| 亚洲第一色在线| 精品动漫一区二区| 红桃视频成人在线观看| 欧美一性一乱一交一视频| 国产精品普通话| 欧美野外猛男的大粗鳮| 国产日本欧美一区二区三区在线| 久久黄色av网站| 欧美精品久久久久久久免费观看| 国产日韩av在线播放| 亚洲精品在线91| 高清欧美性猛交xxxx| 国产一区二区视频在线观看| 国产成人精品午夜| 18一19gay欧美视频网站| 亚洲欧美国产另类| 欧美激情久久久久久| 日韩av男人的天堂| 亚洲网站在线播放| 国产在线精品播放| 大荫蒂欧美视频另类xxxx| 日韩av不卡电影| 成人免费在线视频网址| 久久精品久久久久久| 亚洲国产97在线精品一区| 欧美大胆a视频| 少妇高潮久久久久久潘金莲| 日韩av网址在线| 欧美夫妻性生活xx| 7777精品久久久久久| 国产丝袜一区二区| 欧美电影《睫毛膏》| 国产精品久久久久久婷婷天堂| 日韩免费高清在线观看| 欧美性生交大片免网| 日韩欧美亚洲一二三区| 91夜夜未满十八勿入爽爽影院| 亚洲欧美日韩另类| 欧美国产日韩一区二区在线观看| 51ⅴ精品国产91久久久久久| 欧美综合国产精品久久丁香| 国产精品久久久久久久久久久不卡| 亚洲欧美激情四射在线日| 欧美性视频精品| 亚洲人成电影在线播放| 欧美国产视频一区二区| 久久久久久久久综合| 韩国美女主播一区| 日韩电影在线观看中文字幕| 川上优av一区二区线观看| 日韩美女激情视频| 亚洲成人中文字幕| 欧美精品videos性欧美| 成人性生交大片免费看小说| 97精品视频在线观看| 日韩欧美在线视频日韩欧美在线视频| 亚洲日本aⅴ片在线观看香蕉| 午夜精品久久久久久久99热浪潮| 日韩欧美大尺度| 97香蕉久久超级碰碰高清版| 午夜精品久久久久久久白皮肤| 亚洲美女福利视频网站| 日韩欧美一区二区三区久久| 国产美女扒开尿口久久久| 97**国产露脸精品国产| 欧美性做爰毛片| 欧美精品在线免费播放| 欧美性生交xxxxxdddd| 7m精品福利视频导航| 69视频在线免费观看| 色综合亚洲精品激情狠狠| 国产精品久久久久高潮| 国产在线精品成人一区二区三区| 久久精品久久精品亚洲人| 欧美在线一区二区三区四| 久久久久久久久久久网站| 欧美性猛交xxxx免费看漫画| 91精品视频在线免费观看| 成人妇女淫片aaaa视频| 国产69久久精品成人看| 国产精品igao视频| 国产亚洲欧美日韩精品| 欧美成人免费全部观看天天性色| 亚洲天堂男人的天堂| 亚洲精品久久久久国产| 国产精品亚发布| 国产区精品视频| 国产一区二区三区三区在线观看| 亚洲三级黄色在线观看| 在线观看久久久久久| 国产在线日韩在线| 国产精品久久久91| 国产精品白嫩美女在线观看| 粉嫩av一区二区三区免费野| 91亚洲精品在线| 国产91精品久久久久久久| 欧美日韩国产精品一区二区不卡中文| 欧美午夜女人视频在线| 中文字幕亚洲在线| 国产精品9999| 亚洲伊人一本大道中文字幕| 日本精品久久久| 日韩av快播网址| 欧美亚洲国产视频| 中国人与牲禽动交精品| 日本一本a高清免费不卡| 久久精品国产免费观看| 久久久中精品2020中文| 亚洲第一网站男人都懂| 伊人久久久久久久久久久| 欧美精品激情在线观看| 亚洲精品720p| 久久人人爽人人爽爽久久| 欧美专区在线观看| 欧美性精品220| 中文字幕久久久| 欧美极品xxxx| 欧美精品video| 日韩电影免费观看在线观看| 九九热视频这里只有精品| 国产精品免费一区豆花| 夜色77av精品影院| 国内精久久久久久久久久人| 欧美日本亚洲视频| 日韩av一区在线观看| 亚洲人午夜精品| 国产精品九九久久久久久久| 亚洲欧洲av一区二区| 精品国产精品自拍| 久久久91精品国产一区不卡|