如何在文本框中添加按钮?
我正在尝试使用右侧的按钮制作TextBox。 我的代码:
public partial class TextBoxButton : TextBox { [Category("Button")] [Description("Button in textbox")] public Button Button { get { return this.btn; } set { this.btn = value; } } protected override void OnCreateControl() { if (!this.Controls.Contains(this.btn)) { this.Controls.Add(this.btn); this.btn.Dock = DockStyle.Right; } base.OnCreateControl(); } }
每当我启动appi并在按钮中设置一些文本或图像时,它都是空的。 一些想法?
最好的祝福。
你必须告诉设计师它还应该序列化按钮的属性:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public Button Button { //... }
默认为隐藏,因此不会将任何按钮属性写入Designer.cs文件。 例如,设置Text属性在设计器中起作用,但在启动应用程序或重新加载表单后属性值将丢失。
而不是将Button添加到TextBox中,使用一些容器(Control或UserControl并在其中添加TextBox和Button)。
首先是一个问题:你在TextBox的侧面需要一个或多个按钮吗? 因此,您需要一个按钮或按钮用于一个按钮或一个集合
如果Button不是那么复杂,你必须使用很多特定的function,你可以使用UserControl。 这是正确的方式。 否则你必须采取CustomControl,更多的工作。
逻辑步骤:
- 从上面创建一个给定的控件
- 制作属性按钮或按钮
- 使用Docking-Layout,它更容易
不知道你在“文本框”中的意思。 你的意思是你想让按钮覆盖文本框的右侧,或者位于文本框的右侧(但不重叠)?
我不确定您的要求是什么,但我可能会在可视设计器中执行此操作,而不是尝试在代码中执行此操作:
- 创建一个新的控件
- 创建一个包含两列和一行的表容器。
- 将文本框放在左侧单元格中,将按钮放在右侧单元格中。
如果您确实要将按钮添加到文本框,请按照以下步骤操作:
- 创建一个新的C#WinForms项目
- 在表单上放置新的多行文本框
-
将以下代码粘贴到Load事件中:
Button btn = new Button(); btn.Parent = textBox1; btn.BringToFront(); textBox1.Controls.Add(btn); btn.BackColor = Color.Gray; btn.Text = "Help!";
正如您所看到的,该按钮隐藏了无用的文本,但它确实看起来function齐全。
我相信你真正想要做的是将按钮放在文本框的旁边 。 也许使用Panel控件来包含这两个控件。
此外,每当您将控件添加到另一个控件 – 控件集合时,您必须将父控件设置为您已将其添加到的控件。 Capiche? (抱歉这个讽刺;)
换句话说,您没有将文本框设置为按钮的父控件。
另外,WPF可能有能力执行此操作并在按钮周围流动文本!