C# 如何将按钮添加到文本框?

C# 如何将按钮添加到文本框?,c#,winforms,C#,Winforms,我想做一个右边有按钮的文本框。 我的代码: 每次我启动应用程序并在按钮中设置一些文本或图像时,它都是空的。一些想法 致以最诚挚的问候。不要将按钮添加到文本框中,而是使用一些容器(Control或UserControl并将文本框和按钮添加到中)。不确定“在文本框中”是什么意思。您的意思是希望按钮覆盖文本框的右侧,还是位于文本框的右侧(但不重叠) 我不确定您的需求是什么,但我可能会在可视化设计器中执行此操作,而不是尝试在代码中执行此操作: 创建一个新控件 创建一个包含两列和 一排 将文本框放入 左侧

我想做一个右边有按钮的文本框。 我的代码:

每次我启动应用程序并在按钮中设置一些文本或图像时,它都是空的。一些想法


致以最诚挚的问候。

不要将按钮添加到文本框中,而是使用一些容器(Control或UserControl并将文本框和按钮添加到中)。

不确定“在文本框中”是什么意思。您的意思是希望按钮覆盖文本框的右侧,还是位于文本框的右侧(但不重叠)

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

  • 创建一个新控件
  • 创建一个包含两列和 一排
  • 将文本框放入 左侧单元格,以及 右单元格
  • 如果确实要将按钮添加到文本框,请执行以下步骤:

    • 创建一个新的C#WinForms项目
    • 在窗体上放置新的多行文本框
    • 在加载事件中粘贴以下代码:

      Button btn = new Button();
      btn.Parent = textBox1;
      btn.BringToFront();            
      textBox1.Controls.Add(btn);
      
      btn.BackColor = Color.Gray;
      btn.Text = "Help!";
      
    正如您所看到的,按钮隐藏了不协调的文本,但是它看起来功能齐全

    我相信你真正想做的是把按钮放在文本框的旁边。可能使用一个面板控件来包含这两个控件

    此外,无论何时将控件添加到另一个控件-控件集合,都必须将父控件设置为已将其添加到的控件。卡皮奇?(很抱歉这么冗长;)

    换句话说,您没有将textbox设置为按钮的父控件


    另一方面,WPF可能有能力做到这一点,并在按钮周围流动文本

    您必须告诉设计器,它还应该序列化按钮的属性:

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public Button Button {
        //...
    }
    
    默认设置是隐藏的,因此不会将任何按钮属性写入Designer.cs文件。例如,设置文本属性在设计器中起作用,但在启动应用程序或重新加载表单后,属性值将丢失。

    首先问一个问题: 您是否需要在文本框的一侧设置一个或多个按钮? 因此,对于一个按钮或集合,您需要一个或多个属性按钮

    如果按钮不是那么复杂,你需要做很多特定的功能, 您可以使用UserControl。这是正确的方法。 否则,您必须采取CustomControl,更多的工作

    逻辑步骤:

    • 从上面创建一个给定控件
    • 创建一个或多个属性按钮
    • 使用停靠布局,这更容易

    这不是用户控件的确切定义吗?不,usercontrol是类(或从“”System.Windows.Forms.usercontrol派生的类".这个类有一些能力,主要用于在图形设计器中创建复杂的控件。nobugz你知道如何在textbox中设置填充吗?当我写东西时,文本会在按钮后面…你可以通过设置正确的边距来完成。P/调用SendMessage发送EM_SETMARGINS。你能解释一下如何做吗?@abatishchev:我有3个24更像这样:)@Hans:似乎人们为了更好的东西而放弃投票。第二次可能会来吗?:)
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public Button Button {
        //...
    }