【问题标题】:Winforms Control that allows text wrapping and smooth scrolling允许文本换行和平滑滚动的 Winforms 控件
【发布时间】:2020-09-23 19:05:30
【问题描述】:

Winforms是否有任何默认允许文本换行和平滑滚动的控件?

我尝试过 DataGridView,但它似乎不允许平滑滚动。另一个是 ListView,但我无法按像素运行滚动,尽管在将 ShowGroups 设置为 true 后它应该可以工作。 而且我读过 ListView 不支持文本换行。

更新: 我正在寻找类似网格的控件,这意味着我需要像使用表格一样使用它。

【问题讨论】:

  • 平滑滚动是什么意思?流畅的动画?还是只显示最后的内容?
  • @PeymanMajidi 我的意思是按像素滚动/在一个单元格内滚动。在 DGV 中,它滚动整个单元格,当一个单元格包含更多行时,它会将内容跳过到另一个单元格,因此最后一行不可见。
  • 使用 RichTextBox !
  • 工具箱中有only one控件可以做到这一点。如果这对您很重要,那么您需要提升到利用 GPU 加速、WPF 和 UWP 的那种 GUI 框架。 stackoverflow.com/questions/20731402/…
  • 按行滚动就足够了,但似乎 Winforms 中没有网格可以支持这一点并换行,对吗?顺便说一句,谢谢你们的 cmets。

标签: c# winforms


【解决方案1】:

您可以使用floating panel,向其中添加新项目,然后将焦点向下滚动到该项目。 您可以将自己的用户控件作为新项目,但在下面的示例中,我使用了一个简单的文本框。

    private void btn_add_clicked(object sender, EventArgs e)
    {
        var textbox = new TextBox
        {
             Text = txtItem.Text,
             Width = flowLayoutPanel1.Width

        };
        flowLayoutPanel1.Controls.Add(textbox);
        textbox.Focus(); // set focus to it to make sure scroll down
    }

只要确保flowLayoutPanel1.AutoScroll 为真

flowLayoutPanel1.AutoScroll = true;

正如我之前所说,您可以创建自己的user control 而不是文本框。

How to Create User control in Windows Form Application

【讨论】:

    猜你喜欢
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多