0

TextBox 内に Label を配置しようとしています。ただし、ラベルをテキスト ボックス内に正しく配置するのに問題があります。テキストボックス内に表示することはできますが、ここで問題が発生します。ラベルを配置しようとすると、正しく機能していないように見えます。TextBox のコンストラクター内に Label を追加する次のスニペットがあります。

        Label lblClear = new Label();
        lblClear.Text = "X";
        lblClear.Font = this.Font;
        lblClear.Location = new Point(this.DisplayRectangle.X + (this.DisplayRectangle.Width - 15), this.Bounds.Y);
        lblClear.Size = new Size(15, 15);

        this.Controls.Add(lblClear);

ただし、これは私が期待しているようにテキストボックスの右側に配置するのではなく、テキストボックスの真ん中に配置します。ClientRectangle、DisplayRectangle、または Bound がテキストボックスのサイズを返さないのはなぜですか? 基になる texbox の四角形は、実際に画面に表示されるものよりも小さいですか?

どんな助けでも大歓迎です。ありがとうございました。

編集:これは私が話していることのスクリーンショットです:

ここに画像の説明を入力

そして、ここに私が持っているクラスがあります:

public class SearchTextBox : TextBox
{
    public SearchTextBox()
    {
        InitializeComponent();
        Label lblClear = new Label();
        lblClear.Text = "X";
        lblClear.Font = this.Font;
        lblClear.Location = new Point(this.DisplayRectangle.X + (this.DisplayRectangle.Width - 15), this.Bounds.Y);
        lblClear.Size = new Size(15, 15);

        this.Controls.Add(lblClear);
    }
}

編集:私はそれを機能させましたが、これはフォームからテキストボックスを削除して再度追加したときにのみ有効になりました...

4

1 に答える 1

0

どのように機能していないかの写真を見せてもらえますか?

TextBox のサイズが変更されたときに「X」を右側に固定したい場合は、右側に Anchor() する必要があります。

コードで得られるものは次のとおりです。

「X」付きのテキストボックス

public class MyTextBox : TextBox
{

    public MyTextBox()
    {
        Label lblClear = new Label();
        lblClear.Text = "X";
        lblClear.Font = this.Font;
        lblClear.Location = new Point(this.DisplayRectangle.X + (this.DisplayRectangle.Width - 15), this.Bounds.Y);
        lblClear.Size = new Size(15, 15);

        this.Controls.Add(lblClear);
    }

}
于 2013-10-23T22:22:17.843 に答える