【问题标题】:How to Display a String in a Progress Bar Control C#如何在进度条控件中显示字符串 C#
【发布时间】:2012-11-20 21:16:12
【问题描述】:

我在我的 GUI 中使用 C# 和 WPF。我的目标是在我从文本框中获得的进度条中显示一个字符串。我希望每 200 毫秒显示 1 个字符,以便字符串动画完成。如何在 WPF 的进度条中显示字符串以及如何为它的显示设置动画?

【问题讨论】:

  • 您目前如何编写代码?有很多不同的方法可以做到这一点
  • 你现在如何编写代码是什么意思?我是学生,这是我的老师要求我做的。我不能用改变的文本框来做......
  • 换句话说,到目前为止您尝试过什么?你有你写的任何代码吗?显示您的代码,以便我们对其进行分析并可能提供帮助。

标签: c# wpf wpf-controls progress-bar


【解决方案1】:

您尝试过Text 属性吗?

MSDN

【讨论】:

  • 错误的进度条。那是 WinForms,这是 WPF。
【解决方案2】:

订阅 ProgressChanged 但不要使用 ProgressBar。只需用新文本更新一个 TextBox。

【讨论】:

    【解决方案3】:

    您可以将ProgressBar 子类化,添加Text 依赖属性,然后为其创建一个模板,该模板将包含一个绑定到Text 属性的TextBox,使用将返回基于@987654324 的子字符串的转换器@ 的 ProgressBar (或者你可以在类本身中处理它)。

    或者,您可以通过多种方式在文本块上覆盖带有渐变画笔的矩形来伪造它。无论您的背景颜色是什么,画笔都应该从透明变为不透明,并且渐变的位置与进度条的值相关。

    这是一个真正快速而肮脏的伪造示例:

    <Grid>
        <ProgressBar Name="MyBar" Minimum="0" Maximum="1" Value="0.6">
    
        </ProgressBar>
    
        <Grid>
            <TextBlock>Some Text that will be covered depending on the value of the progress bar</TextBlock>
            <Rectangle>
                <Rectangle.Fill>
                    <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
                        <GradientStop Offset="0" Color="Transparent"/>
                        <GradientStop Offset="{Binding ElementName=MyBar, Path=Value}" Color="Transparent"/>
                        <GradientStop Offset="{Binding ElementName=MyBar, Path=Value}" Color="White"/>
                        <GradientStop Offset="1" Color="White"/>
                    </LinearGradientBrush>
                </Rectangle.Fill>
            </Rectangle>
        </Grid>
    </Grid>
    

    如果您弄乱了 ProgressBar 的值,您将在渐变画笔中移动透明和不透明之间的过渡。

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 2012-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多