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

这篇具有很好参考价值的文章主要介绍了c# winform实现控件类型、数量的动态更新。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

c# winform窗体实现控件内容的动态更新

在系统开发的过程中,往往会遇到需要动态的控制控件内部显示的控件数量、控件类型的情况,比如这样的。
winform窗体数据实时刷新,工程项目开发,c#,ui,开发语言winform窗体数据实时刷新,工程项目开发,c#,ui,开发语言

1、问题描述:如何自定义的控制控件中数据显示的类型呢?
首先面对这个问题,我们得先了解winform的控制工具中有哪些控件是可以用来承载其他控件工具的,例如以下控件都可以用来承载其他控件工具,那么就可以使用这些控件来动态的实现工具栏的生成。
winform窗体数据实时刷新,工程项目开发,c#,ui,开发语言
此处采用一个panel控件进行演示。
首先,我们添加一个winform窗体,然后往该窗体中拖入一个panel控件
winform窗体数据实时刷新,工程项目开发,c#,ui,开发语言
winform窗体数据实时刷新,工程项目开发,c#,ui,开发语言
在这个窗体中我们插入一个comboBox控件,用于控制panel中生成工具栏的数量,此外每个工具栏中还将包括不同的控件工具,例如包括 textbox、label、button、radioButton,checkbox等等,只要是你需要的控件工具都可以自行添加。

我们进入button按钮下,开始编写用于panel内部控件绘制的代码

 private void button1_Click(object sender, EventArgs e)
        {
            panel1.Controls.Clear();
            Label panel_show_label = new Label()
            {
                Name = "resulr_list_table",
                Text = "标签",
                ForeColor = ColorTranslator.FromHtml("#000000"),
                Height = 20,
                Width = 40
            };
            panel_show_label.TextAlign = ContentAlignment.MiddleCenter;
            panel_show_label.Location = new Point(35, 5);
            panel1.Controls.Add(panel_show_label);

            Label panel_show_id = new Label()
            {
                Name = "resulr_list_id",
                Text = "关联ID",
                ForeColor = ColorTranslator.FromHtml("#000000"),
                Height = 20,
                Width = 50
            };
            panel_show_id.TextAlign = ContentAlignment.MiddleCenter;
            panel_show_id.Location = new Point(panel_show_label.Right + 10, 5);
            panel1.Controls.Add(panel_show_id);

            Label resulr_list_lev = new Label()
            {
                Name = "resulr_list_lev",
                Text = "离开",
                ForeColor = ColorTranslator.FromHtml("#000000"),
                Height = 20,
                Width = 40
            };
            resulr_list_lev.TextAlign = ContentAlignment.MiddleCenter;
            resulr_list_lev.Location = new Point(panel_show_id.Right + 10, 5);
            panel1.Controls.Add(resulr_list_lev);

            Label resulr_list_notLev = new Label()
            {
                Name = "resulr_list_notLev",
                Text = "未离开",
                ForeColor = ColorTranslator.FromHtml("#000000"),
                Height = 20,
                Width = 60
            };
            resulr_list_notLev.TextAlign = ContentAlignment.MiddleCenter;
            resulr_list_notLev.Location = new Point(resulr_list_lev.Right + 10, 5);
            panel1.Controls.Add(resulr_list_notLev);

            Label resulr_list_dlt = new Label()
            {
                Name = "resulr_list_dlt",
                Text = "删除",
                ForeColor = ColorTranslator.FromHtml("#000000"),
                Height = 20,
                Width = 40
            };
            resulr_list_dlt.TextAlign = ContentAlignment.MiddleCenter;
            resulr_list_dlt.Location = new Point(resulr_list_notLev.Right + 10, 5);
            panel1.Controls.Add(resulr_list_dlt);

            Label resulr_list_see = new Label()
            {
                Name = "resulr_list_see",
                Text = "可见",
                ForeColor = ColorTranslator.FromHtml("#000000"),
                Height = 20,
                Width = 40
            };
            resulr_list_see.TextAlign = ContentAlignment.MiddleCenter;
            resulr_list_see.Location = new Point(resulr_list_dlt.Right + 10, 5);
            panel1.Controls.Add(resulr_list_see);
            panel1.Width = resulr_list_see.Right + 40;
            int resNumList = int.Parse(comboBox1.Text);

            for (int i = 0; i < resNumList; i++)
            {
                Panel panel = new Panel()
                {
                    Name = "reg_panel_" + i.ToString(),
                    Width = panel1.Width,
                    ForeColor = ColorTranslator.FromHtml("#000000"),
                    BackColor = ColorTranslator.FromHtml("#D3D3D3"),
                    Height = 30
                };
                Label index_label = new Label()
                {
                    Name = "reg_index_" + i.ToString(),
                    Text = i.ToString(),
                    ForeColor = ColorTranslator.FromHtml("#000000"),
                    Height = 20,
                    Width = 30
                };
                index_label.TextAlign = ContentAlignment.MiddleCenter;
                index_label.Location = new Point(0, 5);
                panel.Controls.Add(index_label);

                Label reg_label = new Label()
                {
                    Name = "reg_label_" + i.ToString(),
                    Text = i.ToString(),
                    ForeColor = ColorTranslator.FromHtml("#000000"),
                    BackColor = ColorTranslator.FromHtml("#FFA500"),
                    Height = 20,
                    Width = 40
                };
                reg_label.TextAlign = ContentAlignment.MiddleCenter;
                reg_label.Location = new Point(30 + 5, 5);
                panel.Controls.Add(reg_label);

                Label reg_id = new Label()
                {
                    Name = "reg_id_" + i.ToString(),
                    Text = i.ToString(),
                    ForeColor = ColorTranslator.FromHtml("#000000"),
                    Height = 20,
                    Width = 40
                };
                reg_id.TextAlign = ContentAlignment.MiddleCenter;
                reg_id.Location = new Point(panel_show_id.Location.X, 5);
                panel.Controls.Add(reg_id);


                //reg_id.Click += new System.EventHandler(panel1_EventChange);

                RadioButton reg_lev = new RadioButton()
                {
                    Name = "reg_lev_" + i.ToString(),
                    ForeColor = ColorTranslator.FromHtml("#000000"),
                    Height = 20,
                    Width = 40
                };
                reg_lev.Location = new Point(10 + resulr_list_lev.Location.X, 5);
                panel.Controls.Add(reg_lev);

                RadioButton reg_notLev = new RadioButton()
                {
                    Name = "reg_notLev_" + i.ToString(),
                    ForeColor = ColorTranslator.FromHtml("#000000"),
                    Height = 20,
                    Width = 40
                };
                reg_notLev.Location = new Point(15 + resulr_list_notLev.Location.X, 5);
                panel.Controls.Add(reg_notLev);
                RadioButton reg_dlt = new RadioButton()
                {
                    Name = "reg_dlt_" + i.ToString(),
                    ForeColor = ColorTranslator.FromHtml("#000000"),
                    Height = 20,
                    Width = 40
                };

                reg_dlt.Location = new Point(10 + resulr_list_dlt.Location.X, 5);
                panel.Controls.Add(reg_dlt);

                CheckBox reg_see = new CheckBox()
                {
                    Name = "reg_see_" + i.ToString(),
                    ForeColor = ColorTranslator.FromHtml("#000000"),
                    Height = 20,
                    Width = 40
                };
                reg_see.Location = new Point(10 + resulr_list_see.Location.X, 5);
                panel.Controls.Add(reg_see);

                panel.Location = new Point(0, panel_show_label.Bottom + i * 35);
                panel1.Controls.Add(panel);
            }
        }

winform窗体数据实时刷新,工程项目开发,c#,ui,开发语言
需要注意的是,在工具栏中我们用到了三个RadioButton,所以需要在工具栏的生成还需要使用一个panel控件来容纳所需的控件工具。

Panel panel = new Panel()
{
    Name = "reg_panel_" + i.ToString(),
    Width = panel1.Width,
    ForeColor = ColorTranslator.FromHtml("#000000"),
    BackColor = ColorTranslator.FromHtml("#D3D3D3"),
    Height = 30
};

最后当所有工具添加完成后再将该panel控件加入到panel1容器中。

panel1.Controls.Add(panel);

本文仅就控件内控件工具的动态控制和跟新进行简单的介绍,相对复杂的控件处理可以在上述方法的基础上进行修改或改进。文章来源地址https://www.toymoban.com/news/detail-568162.html

到了这里,关于c# winform实现控件类型、数量的动态更新的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# Winform无边框窗体实现界面拖动

    C# Winform无边框窗体实现界面拖动

    2024年02月07日
    浏览(47)
  • C# winform窗体UI美化后实现最大化、最小化、还原、关闭、窗体移动等等-2023/1/11

    在做winform窗体UI美化时,一般都需要将窗体的FormBorderStyle属性设为None,之后窗体就会没有最上面的标题栏,然后按照UI进行界面的设计。美化的代价就是窗体本来标题栏的相关操作,例如双击自动最大化,再次双击又恢复正常大小,以及上窗体关闭、最小化等功能就都需要自

    2024年02月08日
    浏览(55)
  • 使用双缓冲技术解决winform窗体控件卡顿(dataGridView加载数据缓慢)

    在做C/S项目中,做好的窗体出现了页面加载控件缓慢,放大、缩小窗体之后,窗体加载卡顿,以及数据渲染缓慢。 百度介绍:我们看电视时,看到的屏幕称为OSD层,也就是说,只有在OSD层上显示图像我们才能看到。现在,我需要创建一个虚拟的、看不见但是可以在上面画图(

    2024年02月02日
    浏览(46)
  • 【C#学习记录】如何让界面控件实现自适应布局(Winform)

    小伙伴们大家好,我是雷工! 在软件界面设计中,客户常常要求设计的界面可以随意缩放,缩放过程中,界面中的按钮等控件也会随着窗体变大缩小自动调整显示位置和尺寸大小。在C#的Winform窗体中如何实现这个效果,下面我们一起学习下。 本样例的程序运行环境具体如下

    2023年04月21日
    浏览(51)
  • 打印Winform控件实现简陋版的分页打印(C#)

    本文的代码可以从这里获取:winformDemo.rar · 张祥裕/分享的资源名称 - Gitee.com 作者的水平有限,如有错误,望指正。 为了简单起见,纸张大小,打印机等信息按照默认的来,本文的实现方案是:打印Panel中的控件信息,循环进行打印,打印完一张,把信息重新填充到对应的控

    2024年02月14日
    浏览(36)
  • 【C#】【WinForm】MDI窗体

    MDI窗体的相关学习使用 1、设置MDI父窗体  在属性中找到IsMdiContainer选项,设置为True 2、添加MDI子窗体,在项目中依次选择添加-窗体,然后一直默认即可  添加后的项目目录(Form1为父窗口,Form2、Form3为子窗口)  3、在Form1.cs中,创建对应MDI子窗口的对象并调用显示出来 保存

    2024年02月08日
    浏览(50)
  • 【WinForm详细教程一】WinForm中的窗体、Label、TextBox及Button控件、RadioButton和CheckBox、ListBox

    .sln文件 :解决方案文件 位置引用 bin文件夹 : 存放项目的编译结果 exe dll debug 调试 release 发布 pdb 位置信息–调试 obj文件夹 object 编译过程中生成的中间临时文件 加快编译速度 Properties 引用 添加引用 --选择需要的程序集 App.config 配置文件 .csproj 项目文件 位置引用 双击打开

    2024年02月08日
    浏览(51)
  • C# winform窗体全屏显示设置

    窗体全屏显示,并覆盖桌面任务栏。 全屏显示后,如果拖拽标题栏,会使窗体全屏失效(如果禁用了最大话按钮),为了解决这样的问题,需要设置“标题栏移动”属性:

    2024年02月16日
    浏览(63)
  • C#之基于winform窗体绘制简单图形

    什么是窗体? 可以理解为是一个自定义的控制台应用程序。 假如需要仅仅是用vs制作游戏的话,那么vs中,我们平时所用到的控制台应用程序所呈现的窗口时远远不够用的。因此需要自定义窗体。 因此在新建项目时,我们不能再使用控制台应用程序,而是应该选择窗体: 之

    2023年04月16日
    浏览(42)
  • C# Winform 多进程窗体间传值->SendMessage()

    在 C# 的 Windows Forms 中,使用 Windows API 的 SendMessage 方法可以实现窗口间的消息通传递,当然也可以在不同的进程之间发送消息。接下来,我将为您提供一个基本的示例,演示如何使用 SendMessage 以及如何重写 WndProc 方法来接收并处理消息。 首先,你需要添加对Windows API的引用:

    2024年02月14日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包