【问题标题】:Scrollbar on a Label标签上的滚动条
【发布时间】:2010-05-25 16:39:41
【问题描述】:

我需要能够滚动标签上的文本,我将其用于井字游戏的学分部分。我怎样才能做到这一点,我们只被教导滚动滚动条中的数值而不是文本。

 private void xGameCreditsButton_Click(object sender, EventArgs e)
        {
            this.xWinnerLabel.BackColor = Color.White;
            this.xCreditsScrollBar.Visible = true;
            this.xWinnerLabel.Text = "This game was made possible with the help of: blah bla blah";
        }

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    使用文本框代替标签,并根据需要设置ScrollBarsMultiLineWordWrap 属性。要禁用 TextBox 的编辑(并因此使其行为类似于标签),请使用 ReadOnly 属性。

    【讨论】:

    • 好的,我将其更改为文本框,但我需要实现滚动条而不在属性窗口中设置它们,我该怎么做?
    • 您在属性窗口中设置的每个属性也可以在代码中设置;您的问题已经显示了设置 BackColorText 属性的一个很好的例子。只需对我的回答中提到的属性执行相同操作即可。
    • 嗨,我尝试为此使用文本框,但我的文本换行符在文本框中显示时不会换行,但它们会在标签中换行。我不知道为什么它是一个“Environment.NewLine”,但它确实如此我使用标签,但它不会滚动,我能为此做些什么吗?
    • @f1wade:您是否将 MultiLine 属性设置为正确的值?
    【解决方案2】:

    由于可能有理由不使用文本框(例如,不希望文本可选择和可复制),这是另一种适用于我的解决方案:

    将面板放置在您希望标签所在的位置,将其 AutoScroll 属性设置为 true。然后将标签放在面板中,锚定它并将其 AutoSize 属性设置为 true。如果标签的文本延伸到面板之外,这将使面板提供滚动条。

    如果您希望文本仅在一个方向上滚动,您可能必须为标签设置 MaximumSize(如果您只想垂直滚动,请设置最大宽度大小,如果您只想水平滚动,请设置最大高度)。

    【讨论】:

    • 这似乎是一个比使用文本框更简洁的解决方案。感谢您的提示。
    【解决方案3】:

    只读的可滚动 TextBox 控件会更容易使用。

    如果你真的想使用标签,你可以把标签放在一个可滚动的 Panel 控件中,并将标签的 AutoSize 属性设置为 true。

    【讨论】:

      【解决方案4】:

      如果它不是绝对必须是标签,则可以改为将其设为只读多行编辑字段。编辑控件会自动滚动。

      【讨论】:

      • 它不一定是标签,但滚动条是必需的,难道没有办法用标签做到这一点吗?
      • 没有。标签没有内置滚动条。如果您只想绘制标签的一部分,则必须自己实现滚动。 (注意:我的经验更多是使用 WinForms。据我所知,在 WPF 中可能有一种方法可以做到这一点。)
      • 另请注意,将只读编辑控件设置为没有边框,它看起来非常像标签。
      猜你喜欢
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-11
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多