You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C# Winform的字符串之间插入TextBox控件?

实现方案

C# Winforms 完全支持动态创建 TextBox 控件并插入到文本的对应位置,主流实现方案有两种:

方案1:使用 FlowLayoutPanel 承载内容(推荐,适配性最高)

核心逻辑是把原始字符串按插入输入框的位置拆分为多个文本片段,交替插入文本Label和输入框到FlowLayoutPanel中,自动完成排版:

  • 拆分原始字符串为多个文本段,比如要实现效果姓名[输入框] 年龄[输入框] 性别[输入框],就拆为["姓名:", " 年龄:", " 性别:"]
  • 遍历文本段,每输出一段文本就创建一个Label控件,设置AutoSize = true后添加到FlowLayoutPanel,紧随其后创建对应TextBox控件,设置合适宽度后也添加到容器即可
    示例代码:
// 初始化承载容器
FlowLayoutPanel contentPanel = new FlowLayoutPanel
{
    Dock = DockStyle.Fill,
    AutoScroll = true,
    Padding = new Padding(15)
};
this.Controls.Add(contentPanel);

// 拆分后的文本片段
List<string> textFragments = new List<string> { "请输入姓名:", " 请输入年龄:", " 请输入联系地址:", " 提交信息" };
for (int i = 0; i < textFragments.Count; i++)
{
    // 添加文本标签
    contentPanel.Controls.Add(new Label 
    { 
        Text = textFragments[i], 
        AutoSize = true, 
        Margin = new Padding(0, 7, 0, 0) // 垂直对齐调整
    });
    // 最后一段文本后无需添加输入框,做判断跳过
    if (i != textFragments.Count - 1)
    {
        contentPanel.Controls.Add(new TextBox 
        { 
            Width = 150, 
            Margin = new Padding(3, 0, 3, 0) 
        });
    }
}

后续需要取输入值时,遍历contentPanel.Controls筛选出TextBox类型控件即可获取对应输入内容。

方案2:RichTextBox 嵌入控件(适合富文本混排场景)

如果需要和复杂富文本内容结合,可以用RichTextBox作为载体:

  • 先向RichTextBox写入基础文本,定位到需要插入输入框的字符索引位置
  • 调用RichTextBox.GetPositionFromCharIndex()方法获取该位置的坐标
  • 动态创建TextBox,设置Parent为RichTextBox,将Location设置为获取到的坐标即可。

注意事项

动态创建的控件建议提前设置Name或Tag属性标记用途,方便后续取值时快速匹配对应输入框。

内容的提问来源于stack exchange,提问作者Devendra Yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 18:36:03