如何自定义C#中的Progress样式

avatar
作者
筋斗云
阅读量:0

在C#中,自定义ProgressBar样式通常涉及到使用Windows Presentation Foundation (WPF)或Windows Forms (WinForms)

  1. WPF自定义ProgressBar样式:

首先,创建一个新的WPF项目。然后,打开MainWindow.xaml文件并添加以下代码:

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"         Title="Custom ProgressBar" Height="150" Width="300">     <Grid>        <ProgressBar Name="MyProgressBar" Value="50" Maximum="100" Minimum="0" Height="20" />     </Grid> </Window> 

接下来,打开MainWindow.xaml.cs文件并添加以下代码:

using System.Windows;  namespace CustomProgressBar {     public partial class MainWindow : Window     {         public MainWindow()         {             InitializeComponent();             MyProgressBar.Value = 50;         }     } } 

现在,我们将自定义ProgressBar的样式。为此,请在MainWindow.xaml文件中添加以下代码:

   <Style TargetType="{x:Type ProgressBar}">        <Setter Property="Template">            <Setter.Value>                <ControlTemplate TargetType="{x:Type ProgressBar}">                    <Border BorderBrush="Black" BorderThickness="1" CornerRadius="3">                         <Grid>                             <Rectangle Fill="LightGray" RadiusX="3" RadiusY="3"/>                             <Rectangle Name="PART_Track" Margin="1"/>                             <Decorator Name="PART_Indicator" Margin="1">                                 <Grid>                                     <Rectangle Fill="Green" RadiusX="3" RadiusY="3"/>                                     <TextBlock Text="{Binding Value, RelativeSource={RelativeSource TemplatedParent}, StringFormat={}{0}%}" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center"/>                                 </Grid>                             </Decorator>                         </Grid>                     </Border>                 </ControlTemplate>             </Setter.Value>         </Setter>     </Style> </Window.Resources> 

这将创建一个带有绿色进度条和白色百分比文本的自定义ProgressBar样式。

  1. WinForms自定义ProgressBar样式:

首先,创建一个新的WinForms项目。然后,向项目中添加一个名为CustomProgressBar的新用户控件。接下来,双击CustomProgressBar以打开设计器。

在设计器中,从工具箱中将一个Panel控件拖放到CustomProgressBar上。将该面板的Dock属性设置为Fill。然后,将Panel的背景颜色更改为所需的进度条颜色(例如,绿色)。

接下来,打开CustomProgressBar.cs文件并添加以下代码:

using System.ComponentModel; using System.Drawing; using System.Windows.Forms;  namespace CustomProgressBar {     public partial class CustomProgressBar : UserControl     {         private int _value;          [DefaultValue(0)]         public int Value         {             get { return _value; }             set             {                 _value = value;                 Invalidate();             }         }          public CustomProgressBar()         {             InitializeComponent();         }          protected override void OnPaint(PaintEventArgs e)         {             base.OnPaint(e);              int progressWidth = (int)(Width * ((double)_value / 100));             e.Graphics.FillRectangle(new SolidBrush(panel1.BackColor), 0, 0, progressWidth, Height);              using (Font font = new Font("Arial", 10))             {                 string text = $"{_value}%";                 SizeF textSize = e.Graphics.MeasureString(text, font);                 e.Graphics.DrawString(text, font, Brushes.White, (Width - textSize.Width) / 2, (Height - textSize.Height) / 2);             }         }     } } 

现在,您可以在主窗体上使用自定义ProgressBar。将其添加到窗体上,并在代码中设置Value属性以更新进度。

这些示例展示了如何在C#中为WPF和WinForms应用程序创建自定义ProgressBar样式。您可以根据需要调整样式以满足您的需求。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!