簡體   English   中英

為c#windows應用程序提供自定義樣式

[英]give custom style to c# windows application

我想知道是否有一種方法來定制使用c#在visual studio中構建的Windows窗體應用程序的樣式。 我在互聯網上搜索過,無法找到覆蓋默認布局視圖的簡單解決方案。 有沒有辦法用級聯樣式表更改布局? 提前致謝。

Windows窗體應用程序不支持CSS ,它在開發網站時使用。

在Winforms中,您只能使用GUI編輯器的“ 屬性”窗口中列出的樣式,除非您要覆蓋OnPaint事件並執行自定義繪圖。

一些例子是:

http://www.codeproject.com/Articles/8056/Creating-Custom-Shaped-Windows-Forms-in-NET

http://geekswithblogs.net/kobush/archive/2005/07/04/CustomBorderForms.aspx

https://customerborderform.codeplex.com/

如果您正在尋找更多可自定義的解決方案,可以轉向WPF。

你可以在這里找到答案..

要么

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        // Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}

您可以使用此類靜態資源。

內部按鈕標簽Style =“{DynamicResource sty3dBtn}”(您也可以在這里設置邊距,但有時根據您自己的需要最適合每個按鈕)

您可以使用xml樣式。 按鈕設置為有陰影和漸變,按下時會亮起等等。因為我想用類似的按鈕重用這些效果,我在Application.Appes.Resources標簽中的Application.xaml中創建了一個可重用的樣式並引用了它的x:鍵入我想要效果的按鈕的樣式屬性。 您可以在您選擇的每個頁面上執行此操作,但我認為最好放在公共區域中,以便它可以在您放置的類的整個范圍內重復使用。請注意,目標類型必須匹配。

我將發布xml樣式的片段,它將常規按鈕轉換為具有3d效果的按鈕。 您可以根據需要多次引用它。 它也減少了內聯代碼的混亂,因此在我看來,頁面更具可讀性。

    <Style x:Key="sty3dBtn" TargetType="Button">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Grid>
                        <Rectangle x:Name="GelBackground" Opacity="1" RadiusX="9" RadiusY="9"
                               Fill="{TemplateBinding Background}" StrokeThickness="0.35"
                                   RenderTransformOrigin="0.5,0.5">
                            <Rectangle.Stroke>
                                <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                    <GradientStop Color="YellowGreen" Offset="0" />
                                    <GradientStop Color="Green" Offset="1" />
                                </LinearGradientBrush>
                            </Rectangle.Stroke>
                        </Rectangle>
                        <Rectangle x:Name="GelShine" Margin="2,2,2,0" VerticalAlignment="Top"
                                   RadiusX="6" RadiusY="6" Opacity="1" Stroke="Transparent" Height="15px">
                            <Rectangle.Fill>
                                <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                    <GradientStop Color="Yellow" Offset="0"/>
                                    <GradientStop Color="Transparent" Offset="1"/>
                                </LinearGradientBrush>
                            </Rectangle.Fill>
                        </Rectangle>
                        <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background" Value="Brown">
                            </Setter>
                        </Trigger>
                        <Trigger Property="IsPressed" Value="True">
                            <Setter Property="Fill" TargetName="GelBackground">
                                <Setter.Value>
                                    <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                                        <GradientStop Color="Yellow" Offset="0"/>
                                        <GradientStop Color="Green" Offset="1"/>
                                    </LinearGradientBrush>
                                </Setter.Value>
                            </Setter>
                            <Setter Property="RenderTransform" TargetName="GelBackground">
                                <Setter.Value>
                                    <TransformGroup>
                                        <ScaleTransform ScaleX="0.9" ScaleY="0.9"/>
                                    </TransformGroup>
                                </Setter.Value>
                            </Setter>
                        </Trigger>
                        <Trigger Property="IsEnabled" Value="False">
                            <Setter Property="Fill" TargetName="GelBackground" Value="LightGray">

                            </Setter>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <!-- Contains animation code-->
        <Setter Property="Background" Value="Green"/>
        <Setter Property="Foreground" Value="White"/>
        <Setter Property="Width" Value="55"/>
        <Setter Property="Height" Value="30"/>
    </Style>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM