在我的richtextbox
内部有一个checkbox
,向下滚动或向上滚动我的richtextbox时,复选框不会滚动它。
CheckBox chk = new CheckBox();
chk.Name = "Chk" + i;
chk.Location = new Point(80,10+i);
chk.Text = "Save";
chk.Size = new System.Drawing.Size(20, 100);
richTextBox1.Controls.Add(chk);
i++;
你能告诉我如何解决它。
答案 0 :(得分:2)
RichTextBox
不能包含CheckBox
个对象。并且您已为检查点的位置设置静态点
chk.Location = new Point(80,10+i)
,它已超过RichTextBox
,而不是
答案 1 :(得分:1)
您可以处理MouseWheel
的{{1}}和Scroll
事件,并使用RichTextBox
win32函数获取GetScrollPos
滚动条的新位置},然后相应地更新RichTextBox
的位置。请注意,当CheckBox
被引发时,ScrollBar的位置不会立即更改为新的位置,它将从当前位置顺利更改为新位置。这就是为什么我们必须使用MouseWheel
来定期反复调用Timer
直到返回位置相同。我们得到的效果并不完美,因为滚动条移动的平滑度,但它接近于平滑度,远远优于在GetScrollPos
事件处理程序中调用GetScrollPos
一次。
但是在这段代码中,我想使用MouseWheel
挂钩到消息循环并获取发送到NativeWindow
的消息,这里的代码工作正常,这段代码只是一个演示并仅处理RichTextBox
。您可以在Vertical scrolling
和WM_HSCROLL
上找到更多信息来处理GetScrollPos
(这很简单,因为它与Horizontal scrolling
非常相似):
Vertical scrolling
答案 2 :(得分:0)