• <menu id="w2i4a"></menu>
  • logo DevExpress WinForm中文手冊(cè)

    皮膚


    立即下載DevExpress WinForms

    這個(gè)主題解釋了如何將DevExpress主題/皮膚應(yīng)用到應(yīng)用程序中,如何允許用戶(hù)在運(yùn)行時(shí)在主題之間切換,如何自定義現(xiàn)有的皮膚或創(chuàng)建自己的皮膚等等。

    DevExpress WinForms控件包含許多基本控件的對(duì)應(yīng)項(xiàng):按鈕、復(fù)選框、窗體、消息框、對(duì)話(huà)框等。我們實(shí)現(xiàn)所有這些控件的主要原因是為了支持的主題,使用DevExpress您可以獲得各種外觀(guān)和全面的控制庫(kù),來(lái)保證整個(gè)應(yīng)用程序的視覺(jué)一致性。

    要查看可用的主題/皮膚,打開(kāi)任何演示應(yīng)用程序。

    應(yīng)用程序

    如何應(yīng)用皮膚

    設(shè)計(jì)時(shí)間

    打開(kāi)項(xiàng)目設(shè)置頁(yè)面并選擇所需的 WinForms 主題,此頁(yè)面在 .NET Core 項(xiàng)目中不可用,將DefaultLookAndFeel組件放置在 Form 上并使用其智能標(biāo)記菜單,或在代碼中指定所需的外觀(guān)。

    運(yùn)行時(shí)(在代碼中)

    調(diào)用UserLookAndFeel.SetSkinStyle方法。

    C#:

    using DevExpress.LookAndFeel;
    
    // ...
    UserLookAndFeel.Default.SetSkinStyle(SkinStyle.WXI);

    VB.NET:

    Imports DevExpress.LookAndFeel
    
    ' ...
    UserLookAndFeel.Default.SetSkinStyle(SkinStyle.WXI)

    提示:矢量調(diào)色板適用于整個(gè) Windows 窗體應(yīng)用程序,您不能將不同的調(diào)色板應(yīng)用于程序中的不同表單。

    如何啟用Bonus或自定義皮膚

    DevExpress皮膚分為兩大類(lèi):DevExpress推薦的最新皮膚,以及存儲(chǔ)在單獨(dú)庫(kù)/包中的過(guò)時(shí)/主題皮膚。

    當(dāng)您使用模板庫(kù)創(chuàng)建項(xiàng)目或?qū)⑷魏慰丶戏诺奖韱紊蠒r(shí),現(xiàn)代皮膚立即可用。如果啟動(dòng)空白項(xiàng)目,則需要DevExpress.Utils手動(dòng)添加庫(kù)(或安裝DevExpress.Utils NuGet package),對(duì)于blank .NET Core (. NET 5) 項(xiàng)目,請(qǐng)安裝全局DevExpress.Win.Design。

    過(guò)時(shí)的皮膚和主題皮膚存儲(chǔ)在DevExpress.BonusSkins 庫(kù)/NuGet 包中,這些皮膚必須先注冊(cè)才能應(yīng)用。如需注冊(cè)獎(jiǎng)勵(lì)皮膚,請(qǐng)?jiān)陧?xiàng)目設(shè)置頁(yè)面查看相應(yīng)設(shè)置,或在應(yīng)用啟動(dòng)時(shí)Register調(diào)用該方法:

    C#:

    namespace WindowsFormsApplication1 {
    static class Program {
    [STAThread]
    static void Main() {
    DevExpress.UserSkins.BonusSkins.Register();
    
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
    }
    }
    }

    VB.NET:

    Public Class Form1
    Shared Sub Main()
    DevExpress.UserSkins.BonusSkins.Register()
    
    Application.EnableVisualStyles()
    Application.SetCompatibleTextRenderingDefault(False)
    Application.Run(New Form1)
    End Sub
    End Class

    注冊(cè)獎(jiǎng)勵(lì)皮膚后,您可以像使用standard skins一樣使用它們。

    C#:

    using DevExpress.LookAndFeel;
    
    UserLookAndFeel.Default.SetSkinStyle(SkinStyle.Pumpkin);

    VB.NET:

    Imports DevExpress.LookAndFeel
    
    UserLookAndFeel.Default.SetSkinStyle(SkinStyle.Pumpkin)

    還必須注冊(cè) Skin Editor工具生成的庫(kù)中的自定義皮膚。

    如何讓用戶(hù)在運(yùn)行時(shí)選擇皮膚

    DevExpress WinForms 訂閱包括多個(gè)即用型欄項(xiàng)目,允許用戶(hù)在皮膚和皮膚調(diào)色板之間切換,您可以將這些項(xiàng)目添加到工具欄表單和Fluent Design 表單的工具欄、功能區(qū)和標(biāo)題欄。

    欄目

    下面的代碼將 Skin Gallery 選擇器添加到"ribbonPageGroup2"組中。

    C#:

    using DevExpress.XtraBars;
    // ...
    SkinRibbonGalleryBarItem skinGallery = new SkinRibbonGalleryBarItem();
    ribbonPageGroup2.ItemLinks.Add(skinGallery);

    VB.NET:

    Imports DevExpress.XtraBars
    ' ...
    Private skinGallery As New SkinRibbonGalleryBarItem()
    ribbonPageGroup2.ItemLinks.Add(skinGallery)

    請(qǐng)注意,如果SkinDropDownButtonItem在代碼中創(chuàng)建選擇器,則需要調(diào)用該InitDropDownSkinGallery方法來(lái)初始化該選擇器的下拉列表。

    C#:

    using DevExpress.XtraBars;
    using DevExpress.XtraBars.Helpers;
    // Add the selector next to the standard "Close", "Maximize", and "Minimize"
    // buttons of the Toolbar Form
    SkinDropDownButtonItem skinSelector = new SkinDropDownButtonItem();
    SkinHelper.InitDropDownSkinGallery(skinSelector);
    skinSelector.Alignment = BarItemLinkAlignment.Right;
    this.toolbarFormControl1.TitleItemLinks.Add(skinSelector);

    VB.NET:

    Imports DevExpress.XtraBars
    Imports DevExpress.XtraBars.Helpers
    ' Add the selector next to the standard "Close", "Maximize", and "Minimize"
    ' buttons of the Toolbar Form
    Private skinSelector As New SkinDropDownButtonItem()
    SkinHelper.InitDropDownSkinGallery(skinSelector)
    skinSelector.Alignment = BarItemLinkAlignment.Right
    Me.toolbarFormControl1.TitleItemLinks.Add(skinSelector)

    要重命名和/或更改這些標(biāo)準(zhǔn)皮膚選擇器項(xiàng)目的圖標(biāo),請(qǐng)?zhí)幚碓揝kinHelper.CreateGalleryItem事件。

    C#:

    using DevExpress.XtraBars;
    using DevExpress.XtraBars.Helpers;
    
    SkinHelper.CreateGalleryItem += (s, e) => {
    if (e.ItemName.Equals("DevExpress Style")) {
    e.GalleryItem.Image = e.UseLargeIcons ? MyCustomLargeIcon : MyCustomSmallIcon;
    e.GalleryItem.HoverImage = MyCustomLargeIcon;
    e.GalleryItem.Caption = "Moonlight";
    }
    };

    VB.NET:

    Imports DevExpress.XtraBars
    Imports DevExpress.XtraBars.Helpers
    
    AddHandler SkinHelper.CreateGalleryItem, Sub(s, e)
    If e.ItemName.Equals("DevExpress Style") Then
    e.GalleryItem.Image = If(e.UseLargeIcons, MyCustomLargeIcon, MyCustomSmallIcon)
    e.GalleryItem.HoverImage = MyCustomLargeIcon
    e.GalleryItem.Caption = "Moonlight"
    End If
    End Sub

    提示:

    • 在不同的皮膚中,皮膚元素可以有不同的設(shè)置(例如填充、邊距等)。有些皮膚包含了其他皮膚中不可用的元素。
    • 在某些情況下,從一個(gè)皮膚切換到另一個(gè)皮膚可能會(huì)破壞表單的布局(例如,UI控件可能更短或更薄,內(nèi)容可能被剪切),我們建議不要?jiǎng)?chuàng)建 pixel-perfect的布局,以避免在更改皮膚時(shí)出現(xiàn)UI問(wèn)題。

    皮膚調(diào)色板

    DevExpress WinForms皮膚可以在UI元素上繪制光柵或矢量圖像。柵格皮膚只有一個(gè)默認(rèn)外觀(guān),而每個(gè)矢量皮膚都有一個(gè)選擇的調(diào)色板(色板),用戶(hù)可以選擇調(diào)色板來(lái)修改當(dāng)前皮膚的配色方案。下圖展示了“The Bezier”矢量皮膚附帶的一些調(diào)色板。

    調(diào)色板

    您可以采用與指定外觀(guān)相同的方式應(yīng)用調(diào)色板:打開(kāi)項(xiàng)目設(shè)置頁(yè)面或調(diào)用SetSkinStyle(SkinSvgPalette)重載。

    C#:

    using DevExpress.LookAndFeel;
    // ...
    UserLookAndFeel.Default.SetSkinStyle(SkinSvgPalette.Bezier.Tokyo);

    VB.NET:

    Imports DevExpress.LookAndFeel
    ' ...
    UserLookAndFeel.Default.SetSkinStyle(SkinSvgPalette.Bezier.Tokyo)

    默認(rèn)應(yīng)用程序模式(淺色/深色)

    使用WindowsFormsSettings.TrackWindowsAppMode設(shè)置指定您的應(yīng)用程序是否跟蹤 Windows 操作系統(tǒng)中的默認(rèn)應(yīng)用程序模式設(shè)置并在外觀(guān)庫(kù)中僅顯示淺色或深色調(diào)色板。

    以下示例演示了如何啟用該TrackWindowsAppMode設(shè)置:

    C#:

    static void Main() {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    WindowsFormsSettings.TrackWindowsAppMode = DevExpress.Utils.DefaultBoolean.True;
    Application.Run(new Form1());
    }

    VB.NET:

    Shared Sub Main()
    Application.EnableVisualStyles()
    Application.SetCompatibleTextRenderingDefault(False)
    WindowsFormsSettings.TrackWindowsAppMode = DevExpress.Utils.DefaultBoolean.True
    Application.Run(New Form1())
    End Sub
    設(shè)置

    注意:WindowsFormsSettings.TrackWindowsAppMode設(shè)置僅適用于“WXI”,“Basic”和“The Bezier”皮膚。

    使用系統(tǒng)或自定義強(qiáng)調(diào)色

    系統(tǒng)強(qiáng)調(diào)色

    啟用WindowsFormsSettings.TrackWindowsAccentColor選項(xiàng)來(lái)使用 Windows 操作系統(tǒng)中的強(qiáng)調(diào)顏色設(shè)置,并將其應(yīng)用到矢量外觀(guān)的所有調(diào)色板(高對(duì)比度外觀(guān)除外)。

    C#:

    using DevExpress.XtraEditors;
    
    static void Main() {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    WindowsFormsSettings.TrackWindowsAccentColor = DevExpress.Utils.DefaultBoolean.True;
    Application.Run(new Form1());
    }

    VB.NET:

    Imports DevExpress.XtraEditors
    
    Shared Sub Main()
    Application.EnableVisualStyles()
    Application.SetCompatibleTextRenderingDefault(False)
    WindowsFormsSettings.TrackWindowsAccentColor = DevExpress.Utils.DefaultBoolean.True
    Application.Run(New Form1())
    End Sub
    系統(tǒng)強(qiáng)調(diào)色
    自定義強(qiáng)調(diào)色

    使用SetAccentColor方法自定義強(qiáng)調(diào)色(優(yōu)先于系統(tǒng)強(qiáng)調(diào)色)。

    自定義

    C#:

    DevExpress.XtraEditors.WindowsFormsSettings.SetAccentColor(Color.FromArgb(16, 124, 65));

    VB.NET:

    DevExpress.XtraEditors.WindowsFormsSettings.SetAccentColor(Color.FromArgb(16, 124, 65))

    提示:

    • “The Bezier”皮膚支持第二種強(qiáng)調(diào)色,其他皮膚不支持第二種強(qiáng)調(diào)色。
    • 使用SetAccentColor2方法指定第二個(gè)強(qiáng)調(diào)色。
    重置強(qiáng)調(diào)色

    以下示例演示了如何重置主要和次要強(qiáng)調(diào)色:

    C#:

    DevExpress.XtraEditors.WindowsFormsSettings.SetAccentColor(System.Drawing.Color.Empty);
    DevExpress.XtraEditors.WindowsFormsSettings.SetAccentColor2(System.Drawing.Color.Empty);

    VB.NET:

    DevExpress.XtraEditors.WindowsFormsSettings.SetAccentColor(System.Drawing.Color.Empty)
    DevExpress.XtraEditors.WindowsFormsSettings.SetAccentColor2(System.Drawing.Color.Empty)

    當(dāng)您禁用WindowsFormsSettings.TrackWindowsAccentColor設(shè)置時(shí),強(qiáng)調(diào)色不會(huì)自動(dòng)重置。您應(yīng)該調(diào)用該SetAccentColor(System.Drawing.Color.Empty)方法來(lái)重置強(qiáng)調(diào)色。

    C#:

    WindowsFormsSettings.TrackWindowsAccentColor = DefaultBoolean.False;
    WindowsFormsSettings.SetAccentColor(Color.Empty);
    WindowsFormsSettings.SetAccentColor2(Color.Empty);

    VB.NET:

    WindowsFormsSettings.TrackWindowsAccentColor = DefaultBoolean.False
    WindowsFormsSettings.SetAccentColor(Color.Empty)
    WindowsFormsSettings.SetAccentColor2(Color.Empty)

    突出顯示單獨(dú)的控件

    您可以為各個(gè) DevExpress 控件(例如SimpleButtons)設(shè)置自定義背景、邊框和前景色,為此請(qǐng)?jiān)L問(wèn)Control.Appearance組中的設(shè)置。建議您使用DX Colors而不是系統(tǒng)顏色,這些顏色是從外觀(guān)中檢索的,并且當(dāng)用戶(hù)在運(yùn)行時(shí)更改外觀(guān)時(shí)會(huì)自動(dòng)更新。

    C#:

    // Use DXSkinColors.FillColors for background colors
    simpleButton1.Appearance.BackColor = DXSkinColors.FillColors.Danger;
    // Use DXSkinColors.ForeColors for text colors
    simpleButton1.Appearance.ForeColor = DXSkinColors.ForeColors.Warning;

    VB.NET:

    ' Use DXSkinColors.FillColors for background colors
    simpleButton1.Appearance.BackColor = DXSkinColors.FillColors.Danger
    ' Use DXSkinColors.ForeColors for text colors
    simpleButton1.Appearance.ForeColor = DXSkinColors.ForeColors.Warning

    高對(duì)比度皮膚

    “高對(duì)比度”矢量皮膚是為低視力障礙用戶(hù)提供的無(wú)障礙主題。

    輔助功能主題

    該主題的外觀(guān)和可用性取決于用戶(hù)設(shè)置(Windows 中的“Personalize | High contrast settings菜單)。

    • 如果Windows的高對(duì)比度模式是 off,用戶(hù)可以像選擇其他DevExpress主題一樣選擇High contrast 皮膚,皮膚調(diào)色板選擇器也是可用的。
    • 如果Windows高對(duì)比度模式的on,所有允許用戶(hù)更改皮膚和調(diào)色板的UI選擇器都被禁用,帶有Default調(diào)色板的矢量High Contrast皮膚變得活躍。Default調(diào)色板使用與用戶(hù)在Windows “ High contrast settings”屏幕中設(shè)置的顏色相同。

    您可以禁用靜態(tài)WindowsFormsSettings.TrackSystemHighContrastMode屬性,以防止應(yīng)用程序跟蹤 Windows 高對(duì)比度模式的實(shí)際狀態(tài)。在這種情況下,應(yīng)用程序不會(huì)打開(kāi)或關(guān)閉“High Contrast”皮膚,用戶(hù)可以選擇任何皮膚。

    加厚表單邊框

    在“Office 2019 Colorful”等現(xiàn)代平面皮膚中,DevExpress Forms會(huì)顯示薄邊框,這對(duì)用戶(hù)來(lái)說(shuō)可能不方便,因?yàn)楫?dāng)他們?cè)噲D調(diào)整表單的大小時(shí),他們必須用鼠標(biāo)指針瞄準(zhǔn)那些細(xì)邊框。為了改善用戶(hù)體驗(yàn),DevExpress Forms的調(diào)整大小區(qū)域包括邊框和Form陰影/發(fā)光皮膚元素,這允許用戶(hù)在鼠標(biāo)指針懸停在窗體的陰影上時(shí)調(diào)整窗體的大小。

    在以下情況下,表單無(wú)法顯示陰影:

    • 如果表單是子 MDI 表單。
    • 如果用戶(hù)通過(guò)遠(yuǎn)程桌面連接訪(fǎng)問(wèn)應(yīng)用程序。

    無(wú)法顯示

    在這些情況下,您可以增加表單邊框?qū)挾葋?lái)擴(kuò)大調(diào)整大小區(qū)域。

    情況說(shuō)明

    要增加邊框?qū)挾?,?qǐng)啟用WindowsFormsSettings.FormThickBorderWindowsFormsSettings.MdiFormThickBorder屬性,具體取決于您是要增加所有 DevExpress 窗體的邊框大小,還是僅增加用作子 MDI 窗體的窗體的邊框大小。

    使用WindowsFormsSettings.ThickBorderWidth屬性更改表單邊框的寬度。

    提示:當(dāng)啟用遠(yuǎn)程連接優(yōu)化模式時(shí),表單將切換為粗邊框。啟用此模式時(shí),禁用FormThickBorder屬性來(lái)保留基于皮膚的邊框。

    皮膚編輯器

    DevExpress WinForms 安裝附帶了一個(gè)允許您創(chuàng)建、編輯和分發(fā)主題的工具:Skin Editor。

    皮膚

    備忘表和故障排除

    Appearances and Skins - DevExpress WinForms Cheat Sheet

    示例和最佳實(shí)踐

    如何獲取當(dāng)前活動(dòng)的皮膚和調(diào)色板的名稱(chēng)

    讀取ActiveSkinNameActiveSvgPaletteName屬性的值。

    C#:

    var skinName = UserLookAndFeel.Default.ActiveSkinName;
    var paletteName = UserLookAndFeel.Default.ActiveSvgPaletteName;

    VB.NET:

    Dim skinName = UserLookAndFeel.Default.ActiveSkinName
    Dim paletteName = UserLookAndFeel.Default.ActiveSvgPaletteName
    如何識(shí)別皮膚或調(diào)色板在運(yùn)行時(shí)是否已更改

    處理靜態(tài)UserLookAndFeel.StyleChanged事件,每次用戶(hù)應(yīng)用不同的皮膚或皮膚調(diào)色板時(shí)都會(huì)引發(fā)此事件。

    C#:

    UserLookAndFeel.Default.StyleChanged += (s, e) => {
    // TODO
    };

    VB.NET:

    AddHandler UserLookAndFeel.Default.StyleChanged, Sub(s, e)
    ' TODO
    End Sub
    如何從矢量皮膚調(diào)色板中獲取顏色

    使用以下代碼檢索調(diào)色板顏色的值:

    C#:

    var commonSkin = CommonSkins.GetSkin(UserLookAndFeel.Default);
    SvgPalette svgPalette = commonSkin.SvgPalettes[Skin.DefaultSkinPaletteName] as SvgPalette;
    Color keyPaintColor = svgPalette["Key Paint"].Value;

    VB.NET:

    Dim commonSkin = CommonSkins.GetSkin(UserLookAndFeel.Default)
    Dim svgPalette As SvgPalette = TryCast(commonSkin.SvgPalettes(Skin.DefaultSkinPaletteName), SvgPalette)
    Dim keyPaintColor As Color = svgPalette("Key Paint").Value
    當(dāng)應(yīng)用程序重新啟動(dòng)時(shí),如何重新應(yīng)用上次活動(dòng)的皮膚

    Windows表單應(yīng)用程序設(shè)置功能允許您在客戶(hù)端計(jì)算機(jī)上創(chuàng)建、存儲(chǔ)和維護(hù)自定義應(yīng)用程序和用戶(hù)首選項(xiàng)。此時(shí)可以使用此功能在應(yīng)用程序重新啟動(dòng)時(shí)保存和恢復(fù)活動(dòng)的皮膚和調(diào)色板。

    雙擊 Visual Studio 解決方案資源管理器中的“Settings.settings”文件,并創(chuàng)建兩個(gè)字符串類(lèi)型的條目,將兩個(gè)條目的范圍設(shè)置為“User”。當(dāng)應(yīng)用程序即將關(guān)閉時(shí),將UserLookAndFeel.Default.SkinNameUserLookAndFeel.Default.ActiveSvgPaletteName屬性的值保存到應(yīng)用程序設(shè)置。當(dāng)應(yīng)用程序啟動(dòng)時(shí),讀取這些保存的值并將它們作為參數(shù)傳遞給UserLookAndFeel.SetSkinStyle方法。

    對(duì)于 v22.1 及更高版本的 DevExpress 安裝,請(qǐng)?jiān)谠O(shè)置中添加額外的布爾條目,這一項(xiàng)應(yīng)用于確定是采用常規(guī)版本還是精簡(jiǎn)版本的WXI皮膚。

    xml:

    <?xml version='1.0' encoding='utf-8'?>
    <SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="DXApplication1.Properties" GeneratedClassName="Settings">
    <Profiles/>
    <Settings>
    <Setting Name="SkinName" Type="System.String" Scope="User">
    <Value Profile="(Default)" />
    </Setting>
    <Setting Name="Palette" Type="System.String" Scope="User">
    <Value Profile="(Default)" />
    </Setting>
    <Setting name="CompactMode" serializeAs="String">
    <Value>False</value>
    </Setting>
    </Settings>
    </SettingsFile>

    C#:

    using DevExpress.LookAndFeel;
    
    private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
    var settings = Properties.Settings.Default;
    settings.SkinName = UserLookAndFeel.Default.SkinName;
    settings.Palette = UserLookAndFeel.Default.ActiveSvgPaletteName;
    settings.CompactMode = UserLookAndFeel.Default.CompactUIModeForced;
    settings.Save();
    }
    
    protected override void OnShown(EventArgs e) {
    base.OnShown(e);
    var settings = Properties.Settings.Default;
    if (!string.IsNullOrEmpty(settings.SkinName)) {
    if (settings.CompactMode)
    UserLookAndFeel.ForceCompactUIMode(true, false);
    if (!string.IsNullOrEmpty(settings.Palette))
    UserLookAndFeel.Default.SetSkinStyle(settings.SkinName, settings.Palette);
    else UserLookAndFeel.Default.SetSkinStyle(settings.SkinName, "DefaultSkinPalette");
    }
    }

    VB.NET:

    Imports DevExpress.LookAndFeel
    
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs)
    Dim settings_Renamed = My.Settings.Default
    settings_Renamed.SkinName = UserLookAndFeel.Default.SkinName
    settings_Renamed.Palette = UserLookAndFeel.Default.ActiveSvgPaletteName
    settings_Renamed.CompactMode = UserLookAndFeel.Default.CompactUIModeForced
    settings_Renamed.Save()
    End Sub
    
    Protected Overrides Sub OnShown(ByVal e As EventArgs)
    MyBase.OnShown(e)
    Dim settings_Renamed = My.Settings.Default
    If Not String.IsNullOrEmpty(settings_Renamed.SkinName) Then
    If settings_Renamed.CompactMode Then
    UserLookAndFeel.ForceCompactUIMode(True, False)
    End If
    If Not String.IsNullOrEmpty(settings_Renamed.Palette) Then
    UserLookAndFeel.Default.SetSkinStyle(settings_Renamed.SkinName, settings_Renamed.Palette)
    Else
    UserLookAndFeel.Default.SetSkinStyle(settings_Renamed.SkinName, "DefaultSkinPalette")
    End If
    End If
    End Sub
    如何識(shí)別常規(guī)版本和精簡(jiǎn)版本的WXI皮膚是否活躍

    讀取UserLookAndFeel.Default.CompactUIModeForced屬性值。

    C#:

    bool isCompact = UserLookAndFeel.Default.CompactUIModeForced;

    VB.NET:

    Dim isCompact As Boolean = UserLookAndFeel.Default.CompactUIModeForced
    如何在代碼中區(qū)分淺色皮膚和深色皮膚

    所有 DevExpress 皮膚和調(diào)色板分為兩類(lèi):深色和淺色。要識(shí)別活動(dòng)主題請(qǐng)調(diào)用DevExpress.Utils.Frames.FrameHelper.IsDarkSkin方法。

    C#:

    using DevExpress.Utils.Frames;
    //...
    if (FrameHelper.IsDarkSkin(this.GetActiveLookAndFeel())) {
    // Current skin/palette is dark
    }
    else {
    // Current skin/palette is light
    }

    VB.NET:

    Imports DevExpress.Utils.Frames
    '...
    If FrameHelper.IsDarkSkin(Me.GetActiveLookAndFeel()) Then
    ' Current skin/palette is dark
    Else
    ' Current skin/palette is light
    End If

    請(qǐng)注意,該IsDarkSkin方法根據(jù)“Paint High”調(diào)色板顏色的值來(lái)識(shí)別皮膚是淺色還是深色,因此,該方法的返回值可能與整體皮膚外觀(guān)相反。例如,“Office 2019 深灰色”由于其淺“Paint High”顏色值而被識(shí)別為淺色皮膚,盡管該皮膚主要是深色的。

    您可以用自己的方法來(lái)“修復(fù)”感到困惑的返回值。

    C#:

    VB.NET:bool IsDarkSkinEx() {
    var res = FrameHelper.IsDarkSkin(this.GetActiveLookAndFeel());
    return res || UserLookAndFeel.Default.SkinName == "Office 2019 Dark Gray";
    }

    VB.NET:

    Private Function IsDarkSkinEx() As Boolean
    Dim res = FrameHelper.IsDarkSkin(Me.GetActiveLookAndFeel())
    Return res OrElse UserLookAndFeel.Default.SkinName = "Office 2019 Dark Gray"
    End Function
    如何將皮膚應(yīng)用到?jīng)]有標(biāo)題欄的表單

    要隱藏表單的標(biāo)題欄,請(qǐng)禁用其控制框 和圖標(biāo),并刪除表單的標(biāo)題。

    C#:

    this.Text = null;
    this.IconOptions.ShowIcon = false;
    this.ControlBox = false;

    VB.NET:

    Me.Text = Nothing
    Me.IconOptions.ShowIcon = False
    Me.ControlBox = False

    除非您重寫(xiě)它們的方法,否則此類(lèi)表單不會(huì)設(shè)置皮膚GetAllowSkin。

    C#:

    protected override bool GetAllowSkin() {
    return true;
    }

    VB.NET:

    Protected Overrides Function GetAllowSkin() As Boolean
    Return True
    End Function
    掃碼咨詢(xún)


    添加微信 立即咨詢(xún)

    電話(huà)咨詢(xún)

    客服熱線(xiàn)
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();