0

我正在尝试在 TextBox 中放置一个标签。但是,我在让标签在文本框中正确定位时遇到了一些麻烦。我可以让它显示在文本框中,但这就是我的问题出现的地方。当我尝试定位标签时,它似乎无法正常工作。我有以下片段在 TextBox 的构造函数中添加标签:

        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

你能显示它是如何不工作的图片吗?

如果您希望“X”在调整 TextBox 大小时保持在右侧,那么您需要将其 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 回答