我想知道是否有办法使用c#自定义Visual Studio中构建的Windows窗体应用程序的样式。我已经在互联网上搜索过,无法找到覆盖默认布局视图的简单解决方案。有没有办法用级联样式表更改布局?提前谢谢。
答案 0 :(得分:2)
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。
答案 1 :(得分:1)
或
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());
}
}
答案 2 :(得分:0)
您可以使用此类静态资源。
内部按钮标签Style =&#34; {DynamicResource sty3dBtn}&#34; (您也可以在这里设置边距,但有时根据您自己的需要,最好为每个按钮设置边距)
您可以使用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>