向下滚动后TextBox显示在错误的位置

时间:2013-08-25 19:13:43

标签: c# winforms scrollbar visible

我有一个来自c#,我希望在复选框中单击后显示文本框。 但是当我向下滚动并检查时,文本框显示在错误的位置! 文本框必须与复选框处于同一级别。

private void checkBox1_Checkedchanged(object sender, EventArgs e)
{
    textBox1.Visible = true;
}

并更改文本框的位置不会给出好的结果!

enter image description here

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

你正在遇到一个尴尬的Panel控件怪癖,它只滚动可见的控件。当您在代码中显示它时,如果您使用了滚动条,它将具有错误的Location属性。您需要自己进行修正。看起来像这样:

private void checkBox1_Checkedchanged(object sender, EventArgs e)
{
    if (!textBox1.Visible) {
        textBox1.Location = new Point(textBox1.Left + panel1.AutoScrollPosition.X,
                                      textBox1.Top  + panel1.AutoScrollPosition.Y);
        textBox1.Visible = true;
    }
}

更好的选择是使用Enabled属性,而不是让用户迷失方向。在设计器中将其设置为False,然后:

private void checkBox1_Checkedchanged(object sender, EventArgs e)
{
    textBox1.Enabled = true;
}