如何在文本框中添加按钮?

我正在尝试使用右侧的按钮制作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,它更容易

不知道你在“文本框”中的意思。 你的意思是你想让按钮覆盖文本框的右侧,或者位于文本框的右侧(但不重叠)?

我不确定您的要求是什么,但我可能会在可视设计器中执行此操作,而不是尝试在代码中执行此操作:

  1. 创建一个新的控件
  2. 创建一个包含两列和一行的表容器。
  3. 将文本框放在左侧单元格中,将按钮放在右侧单元格中。

如果您确实要将按钮添加到文本框,请按照以下步骤操作:

  • 创建一个新的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可能有能力执行此操作在按钮周围流动文本!