WinForm+C#小案例--->通过代码动态实现在WinForm窗体中添加和删除文本输入框

WinForm真入门(4)——窗体和控件、属性和事件 的基本概念 前言:既然是WinForm真入门教程,首先是一些基础概念,要先掌握,才能更快德熟悉使用WinForm。概念如果不清,入起门来说 费劲。本章还是基础概念:窗体和控件、属性和事件。这些在Winfom中无处不在,必须牢牢掌握! 阅读详情

通过代码动态实现在WinForm窗体中添加和删除文本输入框

实现这个案例我们可以分为2个步骤

效果演示:

步骤 1:创建 Winform 项目并设计界面

步骤 2:编写代码实现切换逻辑
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace 通过代码动态实现在WinForm窗体中添加和删除文本输入框
{
    public partial class Form1 : Form
    {
        // 声明一个List集合,专门用于存储所有动态创建的TextBox控件的引用
        // 这样做可以方便后续对这些控件进行管理,比如删除
        private List<TextBox> textBoxes = new List<TextBox>();

        // 用于记录当前控件应该放置在哪一行
        private int row = 1;

        // 用于记录当前控件应该放置在哪一列
        private int col = 1;

        public Form1()
        {          
            InitializeComponent();
        }

        //添加按钮的点击事件处理器
        private void button1_Click(object sender, EventArgs e)
        {
            // 1. 创建一个新的TextBox控件实例
            TextBox txt = new TextBox();

            // 2. 设置文本框的大小(宽度100像素,高度20像素)
            txt.Size = new Size(100, 20);

            // 3. 计算新文本框的位置
            // 逻辑是:一行最多放6个,超过6个就自动换行
            // textBoxes.Count 代表已经创建的文本框总数
            if (textBoxes.Count % 6 != 0)
            {
                // 如果不是6的倍数,说明还能放在当前行
                // 水平位置 = (当前列数 - 1) * 控件宽度
                // 垂直位置 = 当前行数 * 控件高度
                txt.Location = new Point((col - 1) * 100, 20 * row);

                // 当前列数加1,为下一个控件做准备
                col++;
            }
            else
            {
                // 如果是6的倍数(如第6个、第12个...),说明需要换行
                row++;        // 行数加1,换到下一行
                col = 1;      // 列数重置为1,从新行的第一列开始
                txt.Location = new Point((col - 1) * 100, 20 * row); // 计算新位置
                col++;        // 列数加1,为下一个控件做准备
            }

            // 4. 将新创建的TextBox添加到List集合中,以便后续管理
            textBoxes.Add(txt);

            // 5. 将新创建的TextBox控件添加到窗体的Controls集合中
            // 只有这样,文本框才能在窗体上显示出来并被窗体管理
            this.Controls.Add(txt);
        }

       
        // 删除按钮的点击事件处理器
        private void button2_Click(object sender, EventArgs e)
        {
            // 1. 检查是否还有可以删除的文本框
            if (textBoxes.Count > 0)
            {
                // 2. 获取最后一个创建的TextBox控件
                TextBox lastTxt = textBoxes[textBoxes.Count - 1];

                // 3. 从List集合中移除对该控件的引用
                textBoxes.Remove(lastTxt);

                // 4. 从窗体的Controls集合中移除该控件
                // 这样,该控件就会从窗体上消失并被销毁
                this.Controls.Remove(lastTxt);

                // 5. 调整行列计数器,以保证下次添加时布局正确
                if (col > 1)
                {
                    // 如果当前列数大于1,说明上一个控件不在行首,只需将列数减1
                    col--;
                }
                else if (row > 1)
                {
                    // 如果当前列数是1(说明刚删除的是某一行的第一个控件),并且行数大于1
                    // 则需要换行,并将列数设置为6(因为上一行是满的)
                    row--;
                    col = 6;
                }
                // 如果 row == 1 且 col == 1,说明所有控件都删光了,保持 (1, 1) 不变即可
            }
        }
    }
}

希望对大家有所帮助。感谢大家的关注和点赞。

c# winForm TableLayoutPanel学习 合并行的布局及动态增加删除内部控件 先通过在IDE中拉出这样的效果图 以学习相关属性上面效果的相关代码 CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#region Windows 窗体设计器生成的代码        ///        阅读详情

相关推荐

C#实现窗体上图片的动态加载与移除指南

C# 作为一门托管语言,其内存管理主要依赖于.NET公共语言运行时(CLR)的垃圾回收器(Garbage Collector, GC)。开发者不必像在非托管语言中那样手动分配和释放内存,CLR 会定期进行内存的清理工作,自动回收不再使用的对象所占用的内存空间。开发者需要关注的是资源管理的其他方面,例如资源的清理和终结操作。

weixin_32747681的博客 1348

C# VS2010 Winform 控件Delete快捷键删除

C# VS2010 Winform 控件Delete快捷键删除,定义Form窗口文件的keypreview属性为True。

OpenSceneGraph的博客 1253

WinForm窗体应用260109题目解析

WinForm的题目和解析

m0_73373492的博客 580

C#高级:Winform中的自定义窗体输入

【代码】C#高级:Winform中的自定义窗体输入。

m0_67412019的博客 1715

C# Winform中DataGridView控件的操作技巧

准备数据源并填充数据。将数据源分配给DataGridView的DataSource属性。选择绑定列的方式(如果需要的话)。在本章节中,我们深入探讨了DataGridView中的删除行操作,包括基本的界面操作和程序中直接操作的实现方法。同时,介绍了更高级的删除策略,如删除条件行以及在删除数据之前确认提示和日志记录的实现。通过这些详尽的分析和代码示例,开发者可以更加灵活地处理DataGridView中行的删除逻辑,确保数据操作的准确性和安全性。

weixin_42576186的博客 1334

C# WinForm TabControl控件美化与扩展技术详解

TabControl是一个常用的界面元素,用于在用户界面中切换显示不同的页面或数据。它使用户能够通过点击不同的标签页(Tab)来切换视图,从而在一个窗口内展示多个内容区域。在.NET Framework、WinForms、WPF等技术栈中,TabControl控件扮演着提高界面整洁性和用户体验的重要角色。在用户界面中,Tab按钮是引导用户浏览不同页面的关键元素。它不仅仅是一个简单的链接,更是一种视觉和交互的焦点。

weixin_42613017的博客 2373

C# WinForm 控件在窗体中动态居中 创建、删除控件及对其赋值

<br />    一、 以lable为例:<br /> <br />        在Form中放一个控件,让其在启动和动态改变窗口大小时始终居中<br /> <br />            int gLeft = this.Width / 2 - lable1.Width / 2; //this指Form<br />            int gTop = this.Height / 2 - lable1.Height / 2;<br />            lable1.Location

baiyun789的专栏 1万+

电力电子技术(13)——大功率可控整流电路

目录引言2.6.1 带平衡电抗器的双反星形可控整流电路电路结构的特点接平衡电抗器的原因平衡电抗器使得两组三相半波整流电路同时导电的原理分析谐波分析2.6.2 多重化整流电路概述原理目标1)移相多重联结2)多重联结电路的顺序控制3重晶闸管整流桥顺序控制带平衡电抗器的双反星形可控整流电路(是多重化整流电路的重要形式之一)的特点:适用于低电压、大电流的场合。多重化整流电路的特点:绕组的极性相反的目的:消除直流磁通势如图所示,虽然两组相电流的瞬时值不同,但是平均电流相等而绕组的极性相反,所以直流安匝(电流*匝数)互

weixin_45589295的博客 1万+

C#WinFrom开发系列之关于动态添加生成和删除控件的相关知识

前段时间由于事情比较多,很长时间没有进行学习和知识的总结,几天有空刚好补上! 今天要讲的是怎样实现控件的动态生成和删除: 1.首先,我们创建一个新的窗体,使用一个panel控件(控件的Dock属性设置为top或Fill)作为整个容器,在该panel控件再创建一个panel控件(控件属性设置为Fill),然后在该控件内部拖入两个dateTimePicker控件和一个TextBox控件和两个lab

DannyIsCoder的博客 1万+

智能车八邻域图像算法

智能车八邻域图像算法

技术缝合怪的博客 4万+

别再手动抄表了!用PaddleOCR超轻量模型5分钟搞定数字仪表识别(附完整Python代码)

本文介绍如何利用PaddleOCR超轻量模型快速实现工业仪表数字识别自动化。通过5行核心代码和关键预处理步骤,显著提升识别准确率至98.2%,解决传统OCR在工业场景中的体积大、抗干扰弱等问题,并提供完整Python代码和边缘部署优化方案。

weixin_31062533的博客 350

C Winform 动态添加和删除用户控件示例:简化Winform开发流程

C# Winform 动态添加和删除用户控件示例:简化Winform开发流程 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在Winform应用程序开发中,动态添加和删除用户控件是一个常见需求。它可以显著提升用户界面的灵活性和交互性。今天,我们将向您推荐一个开源项目——C# Winform 动态添加和删除用户控件示例。本项目是一个实用的C# Winform示例,它不仅...

gitblog_06742的博客 351

DeepSeek + 番茄小说:AI辅助小说开发最全指南

DeepSeek与番茄小说合作推出AI辅助小说创作系统,通过DeepSeek的文本生成能力(包括情节构建、角色塑造等)结合番茄小说的市场数据,为作者提供从创意到发布的全流程支持。系统包含智能创意生成器、角色设计、章节自动生成等核心模块,采用数据驱动优化策略,支持128K长文本处理和多风格模仿。开发架构采用Python+FastAPI技术栈,提供分层审核机制确保质量。该系统可帮助作者突破创作瓶颈,提升效率,同时提供订阅制、内容分成等多元变现模式。需注意版权问题和原创性保证。

weixin_41445009的博客 1679

【C#】Winform使用DataGridView表格控件给每一行添加编辑删除按钮

本文描述了如何在Winform使用DataGridView实现表格数据的添加,编辑、删除、分页功能。 - 使用DataGridView显示数据,它 是 Windows Forms 中功能强大且灵活的表格控件,用于显示和编辑表格数据,本文用它实现学生数据的分页显示、编辑、删除和添加功能。

weixin_43626218的博客 2628

Arduino读取串口接收到的数据并发送数据

Arduino读取串口接收到的数据并发送数据 源程序: void setup() { Serial.begin(115200); } void loop() { String comdata ; while (Serial.available() > 0) { comdata += char(Serial.read()); delay(2); } if (comdata.length() > 0) { Serial.print("串口接收到的数据:"); Serial.println(comd

perseverance51博客 1万+

jira的详细使用教程

​jira的详细使用教程,1,Jira- 是一款缺陷管理软件工具,用其进行缺陷的管理和跟踪。(是B/S架构的软件) 2,主要涉及的角色: 3,具体工作流 添加工作流 1.点击项目设置

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 3295

C#窗体应用实战项目——绩效考核管理系统

笔者入门C#,熟悉C#语法之后,来做一个Winform项目巩固知识,记录一下学习过程。 一、什么是Winform WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端(PC软件)开发技术,一般使用C#编程。C# WinForm 编程需要创建「Windows窗体应用程序」项目。 .NET 提供了大量 Windows 风格的控件和事件,可以直接拿来使用,上手简单,开发快速 Windows 窗体应用程序是 C# 语言中的一个重要应用,也是 C# 语言最常见的

m0_56522574的博客 1万+

Qt实现离线缓存地图(附完整源码)

Qt实现离线缓存地图(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 858

winform自定义窗体,重绘标题栏,自定义控件学习

winform自定义窗体,重绘标题栏 虽然现在都在说winform窗体太丑了,但是我也能尽量让桌面应用程序漂亮那么一点点 话不多说,先上图 重绘标题栏 先将原生窗体设置成无边框,FormBoderStyle设置成None 然后添加一个panpel控件设置成窗体的的标题栏 然后添加四个Label控件充当标题和最小化最大化关闭按钮。 此时界面的原型就出来了。 完善窗体 当然原型出来了,肯定会让其它...

Mrs_Stephanie的博客 3540

(秋招复习)一些SLAM基础

秋招复习--SLAM基础知识篇

weixin_45432823的博客 768

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

C Winform 动态添加和删除用户控件示例

C# Winform 动态添加和删除用户控件示例 去发现同类优质开源项目:https://gitcode.com/ 简介 本仓库提供了一个C# Winform示例,展示了如何在Winform窗体中动态添加和删除用户控件。通过这个示例,您可以学习如何灵活地管理窗体中的控件,实现更丰富的用户交互。 功能 动态添加用户控件 动态删除用户控件 使用说明 解压下载的文件 使用Visual Studio...

gitblog_06741的博客 374

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

c# winform实现控件类型、数量的动态更新

在这个窗体中我们插入一个comboBox控件,用于控制panel中生成工具栏的数量,此外每个工具栏中还将包括不同的控件工具,例如包括 textbox、label、button、radioButton,checkbox等等,只要是你需要的控件工具都可以自行添加。首先面对这个问题,我们得先了解winform的控制工具中有哪些控件是可以用来承载其他控件工具的,例如以下控件都可以用来承载其他控件工具,那么就可以使用这些控件来动态的实现工具栏的生成。此处采用一个panel控件进行演示。

qq_43627520 3761

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C# WinForm 利用TableLayoutPanel实现动态窗体布局与自适应调整

本文详细介绍了如何在C# WinForm开发中利用TableLayoutPanel控件实现动态窗体布局与自适应调整。通过分析绝对定位的弊端,阐述TableLayoutPanel作为表格布局容器的核心优势,并结合实战案例演示如何通过设置行/列尺寸类型、跨列属性及嵌套使用,构建出能随窗体大小智能调整的专业级界面,有效解决控件错乱问题。

potato的博客 256

浅析动态添加、删除、修改TreeView节点

 接着上一篇浅析TreeView绑定效率>>继续讲讲TreeView。在实际项目过程中,TreeView往往会动态的绑定数据,操作界面一旦新添加、修改、删除节点数据,在TreeView中要时时反映新添、被修改、被删除的节点,有的人会采取的方式是直接把树形控件重新加载一遍,这样是可以解决问题,但是随着数据量的增加,重新加载的付出代价很大!有没有好的方法只"刷新"单独新添加的、修改的、删除的节点,

WTPMCheng的专栏 7943

groupbox文字居中_C# WinForm 控件在窗体中动态居中创建删除控件及对其赋值(转)...

一、 以lable为例:在Form中放一个控件,让其在启动和动态改变窗口大小时始终居中int gLeft = this.Width / 2 - lable1.Width / 2; //this指Formint gTop = this.Height / 2 - lable1.Height / 2;lable1.Location = new Point(gLeft, gTop);二、动态创建控件并找到...

weixin_39732018的博客 485

C#小结:以Winform为例,总结一些C#在桌面开发中一些技巧

【代码】Winform:以Winform为例,总结一些C#在桌面开发中一些技巧。

m0_67412019的博客 2745
上一篇: WinForm+C#小案例--->用代码实现窗体设计的香烟购物车小案例
下一篇: C#小案例-->迷你DVD管理器
MM_MS
博客等级 码龄1年 58粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MM_MS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值