【问题标题】:How to scroll a panel while selecting text?选择文本时如何滚动面板?
【发布时间】:2013-06-14 12:38:37
【问题描述】:

我有一个面板,假设这个面板的高度为 500 像素。该面板内部是一个多行文本框,它比面板大 - 假设高度为 1000 像素。

面板设置为显示滚动条,并且可以通过鼠标滚轮和拖动滚动条进行滚动。但是,当在文本框中选择文本(突出显示)然后将选择拖到显示的文本之外时,它不会滚动,但我想要它。就像您在浏览器中选择超出可见范围的文本时一样。

可能值得注意的是,我的面板是自定义的,虽然不多,但我只是添加了以下代码以防止在文本框上设置焦点时出现问题,导致它滚动到底部:

class PanelNoScrollOnFocus : Panel
{
    protected override System.Drawing.Point ScrollToControl(Control activeControl)
    {
        return DisplayRectangle.Location;
    }
}

我得到了这个代码from here,所以如果需要的话,你可以看到更多关于我为什么使用它的信息。

【问题讨论】:

  • 因为你的鼠标移动是在textbox而不是你的panel,你能用textboxscrollbar吗?
  • @Bolu:我当然可以使用它,但这并不是真正的预期行为。不过,我现在可以忍受它。这样做的主要原因是为了在复制文本时提供更好的支持。不着急,我可以让这个问题炖一会儿,看看有没有什么回来

标签: c# winforms


【解决方案1】:

你可以试试这个:

public Form1()
{
    InitializeComponent();
    textBox1.MouseWheel += textBox1_MouseWheel;
    panel1.KeyDown += panel1_KeyDown;
}

void panel1_KeyDown(object sender, KeyEventArgs e)
{
    textBox1.Focus();
}

void textBox1_MouseWheel(object sender, MouseEventArgs e)
{
    panel1.Focus();
}

【讨论】:

  • 这不起作用。也许您误解了我的问题,因为在选择文本框时我已经可以使用鼠标滚动
猜你喜欢
  • 1970-01-01
  • 2011-10-18
  • 2012-06-04
  • 2010-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-23
  • 1970-01-01
相关资源
最近更新 更多