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 に答える