最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實(shí)現(xiàn)Menu和ContextMenu自定義風(fēng)格及contextMenu自定義

 更新時(shí)間:2015年08月04日 16:30:57   作者:tancfeng  
ContextMenu 類表示當(dāng)用戶在控件或窗體的特定區(qū)域上單擊鼠標(biāo)右鍵時(shí)會(huì)顯示的快捷菜單,要想實(shí)現(xiàn)自定義的Menu和ContextMenu效果,大家可以通過派生ProfessionalColorTable類,下面小編把實(shí)現(xiàn)Menu和ContextMenu自定義風(fēng)格及ContextMenu自定義給大家整理一下

為了實(shí)現(xiàn)自定義的Menu和ContextMenu效果,下面演示代碼通過派生ProfessionalColorTable類,在自定義的類中重寫ProfessionalColorTable類的相關(guān)聯(lián)的屬性,從而實(shí)現(xiàn)自定義菜單效果。

using System.Drawing;
using System.Windows.Forms;
public class CustomToolStripColorTable : ProfessionalColorTable
{
  /// <summary>
  /// 主菜單項(xiàng)被點(diǎn)擊后,展開的下拉菜單面板的邊框
  /// </summary>
  public override Color MenuBorder
  {
    get
    {
      return Color.FromArgb(37, 37, 37);
    }
  }
  /// <summary>
  /// 鼠標(biāo)移動(dòng)到菜單項(xiàng)(主菜單及下拉菜單)時(shí),下拉菜單項(xiàng)的邊框
  /// </summary>
  public override Color MenuItemBorder
  {
    get
    {
      return Color.Transparent;
    }
  }
  #region 頂級(jí)菜單被選中背景顏色
  public override Color MenuItemSelectedGradientBegin
  {
    get
    {
      return Color.FromArgb(37, 37, 37);
    }
  }
  public override Color MenuItemSelectedGradientEnd
  {
    get
    {
      return Color.FromArgb(37, 37, 37);
    }
  }
  #endregion
  #region 頂級(jí)菜單被按下是,菜單項(xiàng)背景色
  public override Color MenuItemPressedGradientBegin
  {
    get
    {
      return Color.Black;
    }
  }
  public override Color MenuItemPressedGradientMiddle
  {
    get
    {
      return Color.FromArgb(37, 37, 37);
    }
  }
  public override Color MenuItemPressedGradientEnd
  {
    get
    {
      return Color.Black;
    }
  }
  #endregion
  /// <summary>
  /// 菜單項(xiàng)被選中時(shí)的顏色
  /// </summary>
  public override Color MenuItemSelected
  {
    get
    {
      return Color.FromArgb(37, 37, 37);
    }
  }
  #region 下拉菜單面板背景設(shè)置(不包括下拉菜單項(xiàng))
  //下拉菜單面板背景一共分為2個(gè)部分,左邊為圖像區(qū)域,右側(cè)為文本區(qū)域,需要分別設(shè)置
  //ToolStripDropDownBackground設(shè)置文本部分的背景色
  public override Color ToolStripDropDownBackground
  {
    get
    {
      return Color.Black;
    }
  }
  //以ImageMarginGradient開頭的3個(gè)設(shè)置的是圖像部分的背景色,begin->end是從左到右的順序
  public override Color ImageMarginGradientBegin
  {
    get
    {
      return Color.Black;
    }
  }
  public override Color ImageMarginGradientMiddle
  {
    get
    {
      return Color.Black;
    }
  }
  public override Color ImageMarginGradientEnd
  {
    get
    {
      return Color.Black;
    }
  }
  #endregion
}

然后對(duì)需要實(shí)現(xiàn)自定義風(fēng)格的菜單(如:contextMenuStrip1)應(yīng)用如下代碼:

contextMenuStrip1.RenderMode = ToolStripRenderMode.Professional;
contextMenuStrip1.Renderer = new ToolStripProfessionalRenderer(new CustomToolStripColorTable());

ContextMenu的自定義

1.針對(duì)整個(gè)ContextMenu, 自定義一個(gè)Style,去掉豎分割線

<Style x:Key="DataGridColumnsHeaderContextMenuStyle" TargetType="{x:Type ContextMenu}">
        <Setter Property="SnapsToDevicePixels" Value="True"/>
        <Setter Property="Grid.IsSharedSizeScope" Value="true"/>
        <Setter Property="HasDropShadow" Value="True"/>
        <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="{x:Type ContextMenu}">
              <Border Uid="Border_93">
                <Border.Style>
                  <Style TargetType="{x:Type Border}">
                    <Setter Property="Tag" Value="{DynamicResource {x:Static SystemParameters.DropShadowKey}}"/>
                    <Style.Triggers>
                      <DataTrigger Binding="{Binding Tag, RelativeSource={RelativeSource Self}}" Value="True">
                        <Setter Property="Effect">
                          <Setter.Value>
                            <DropShadowEffect BlurRadius="4" Opacity="0.8" ShadowDepth="1"/>
                          </Setter.Value>
                        </Setter>
                      </DataTrigger>
                    </Style.Triggers>
                  </Style>
                </Border.Style>
                <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Uid="Border_50">
                  <ScrollViewer CanContentScroll="True" Uid="ScrollViewer_9"
              Style="{DynamicResource {ComponentResourceKey ResourceId=MenuScrollViewer, TypeInTargetAssembly={x:Type FrameworkElement}}}">
                    <ItemsPresenter KeyboardNavigation.DirectionalNavigation="Cycle" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Uid="ItemsPresenter_5"/>
                  </ScrollViewer>
                </Border>
              </Border>
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>

2. 針對(duì)其中的ItemContainerStyle來寫個(gè)MenuItem的control template

<Style x:Key="MenuItemStyle1" TargetType="{x:Type MenuItem}"> <Setter Property="Template" Value="{DynamicResource MenuItemControlTemplate1}"/> <Setter Property="Margin" Value="0"></Setter> <Setter Property="Padding" Value="0"></Setter> </Style> <ControlTemplate x:Key="MenuItemControlTemplate1" TargetType="{x:Type MenuItem}"> <Grid x:Name="grid" SnapsToDevicePixels="True" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" > <ContentPresenter ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Grid.Column="0" ContentStringFormat="{TemplateBinding HeaderStringFormat}" ContentSource="Header" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsHighlighted" Value="True"> <Setter Property="Background" TargetName="grid" Value="{DynamicResource Brush_PA_CSW_ListBoxItemDefaultHighlight}"/> </Trigger> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Foreground" Value="#FF9A9A9A"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate>
3. contextMenu使用上述style
 <ContextMenu x:Key="DataGridColumnsHeaderContextMenu" 
    ItemTemplate="{DynamicResource HeaderConfigItemTemplate}" 
    ItemContainerStyle="{DynamicResource MenuItemStyle1}"
        Style="{DynamicResource DataGridColumnsHeaderContextMenuStyle}"
/>

以上就是本文通過C#實(shí)現(xiàn)Menu和ContextMenu自定義風(fēng)格及contextMenu自定義的全部內(nèi)容,希望大家喜歡。

相關(guān)文章

  • C#讀寫txt文件多種方法實(shí)例代碼

    C#讀寫txt文件多種方法實(shí)例代碼

    這篇文章主要介紹了C#讀寫txt文件的小例子,大家可以參考使用
    2013-11-11
  • WCF入門教程之Windows通訊接口

    WCF入門教程之Windows通訊接口

    這篇文章介紹了WCF入門教程之Windows通訊接口,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • 淺談C#手機(jī)號(hào)換成111XXXX1111 這種顯示的解決思路

    淺談C#手機(jī)號(hào)換成111XXXX1111 這種顯示的解決思路

    下面小編就為大家?guī)硪黄獪\談C#手機(jī)號(hào)換成111XXXX1111 這種顯示的解決思路。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-11-11
  • 解析Silverlight調(diào)用WCF/Rest異常的解決方法

    解析Silverlight調(diào)用WCF/Rest異常的解決方法

    本篇文章對(duì)Silverlight調(diào)用WCF/Rest異常的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C#使用Thrift作為RPC框架入門詳細(xì)教程

    C#使用Thrift作為RPC框架入門詳細(xì)教程

    這篇文件我們講了從0到1使用thrift框架的方法,也講了一些該框架的基本知識(shí),本文將詳細(xì)介紹 Thrift 在C#語言下的使用方式,并且提供豐富的實(shí)例代碼加以解釋說明,幫助使用者快速構(gòu)建服務(wù),感興趣的朋友一起看看吧
    2021-11-11
  • c++換行符知識(shí)點(diǎn)總結(jié)

    c++換行符知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理的是關(guān)于c++換行符知識(shí)點(diǎn)總結(jié),需要的朋友們可以參考學(xué)習(xí)下。
    2020-03-03
  • C# 泛型集合的自定義類型排序的實(shí)現(xiàn)

    C# 泛型集合的自定義類型排序的實(shí)現(xiàn)

    這篇文章主要介紹了C# 泛型集合的自定義類型排序的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 使用C#編寫兩個(gè)漂亮?xí)r鐘的示例代碼

    使用C#編寫兩個(gè)漂亮?xí)r鐘的示例代碼

    這篇文章主要為大家分享了兩個(gè)使用C#編寫的兩個(gè)漂亮?xí)r鐘的示例代碼,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-07-07
  • C#?winform實(shí)現(xiàn)中英文切換功能的四種方式

    C#?winform實(shí)現(xiàn)中英文切換功能的四種方式

    這篇文章主要介紹了在C#?winform應(yīng)用程序中實(shí)現(xiàn)中英文切換功能的四種方式,資源文件(Resources),本地化(Localization),動(dòng)態(tài)設(shè)置控件字體和切換語言環(huán)境這四種方式,下面將詳細(xì)介紹每種方式及其具體實(shí)現(xiàn),并討論它們的優(yōu)缺點(diǎn),需要的朋友可以參考下
    2024-04-04
  • c#實(shí)現(xiàn)輸出本月的月歷

    c#實(shí)現(xiàn)輸出本月的月歷

    本篇文章是對(duì)使用c#輸出本月月歷的實(shí)現(xiàn)的代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06

最新評(píng)論

巫山县| 陇南市| 万年县| 将乐县| 固阳县| 贵港市| 太康县| 元谋县| 木兰县| 舟山市| 铅山县| 南雄市| 花垣县| 六枝特区| 北碚区| 湖州市| 宜州市| 体育| 武山县| 辉县市| 望奎县| 读书| 宾川县| 习水县| 金乡县| 尉氏县| 奉新县| 沛县| 涟水县| 台北市| 宜宾县| 疏附县| 二连浩特市| 上犹县| 河北省| 册亨县| 东海县| 渭源县| 定陶县| 武威市| 孟津县|