gpt4 book ai didi

c# - 在文本框控件中添加标签

转载 作者:太空宇宙 更新时间:2023-11-03 20:05:23 25 4
gpt4 key购买 nike

我想制作一个继承自 TextBox 的控件,它有一个标签,标签内部“粘贴”到文本框的右侧,并且该文本不可由用户编辑,而是由属性设置。如何才能做到这一点?我意识到这个 UX 不是一个好主意可能有很多原因,但我必须这样做。

最佳答案

改编自 Hans Passant 的 Button inside a winforms textbox回答:

public class TextBoxWithLabel : TextBox {

[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);

Label label = new Label();

public TextBoxWithLabel() {
label.BackColor = Color.LightGray;
label.Cursor = Cursors.Default;
label.TextAlign = ContentAlignment.MiddleRight;
this.Controls.Add(label);
}

private int LabelWidth() {
return TextRenderer.MeasureText(label.Text, label.Font).Width;
}

public string LabelText {
get { return label.Text; }
set {
label.Text = value;
SendMessage(this.Handle, 0xd3, (IntPtr)2, (IntPtr)(LabelWidth() << 16));
OnResize(EventArgs.Empty);
}
}

protected override void OnResize(EventArgs e) {
base.OnResize(e);
int labelWidth = LabelWidth();
label.Left = this.ClientSize.Width - labelWidth;
label.Top = (this.ClientSize.Height / 2) - (label.Height / 2);
label.Width = labelWidth;
label.Height = this.ClientSize.Height;
}
}

结果:

enter image description here

关于c# - 在文本框控件中添加标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23875101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com