0

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

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

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

在此处输入图像描述

感谢帮助。

4

1 回答 1

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;
}
于 2013-08-25T20:02:08.627 回答