在C#中,自定義ProgressBar樣式通常涉及到使用Windows Presentation Foundation (WPF)或Windows Forms (WinForms)
首先,創建一個新的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樣式。
首先,創建一個新的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樣式。您可以根據需要調整樣式以滿足您的需求。