c#

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

小樊
94
2024-09-02 13:10:05
栏目: 编程语言

在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样式。您可以根据需要调整样式以满足您的需求。

0
看了该问题的人还看了