WinForm技巧之自定义条件

WinForm技巧之自定义条件


场景

在这里插入图片描述

在这里插入图片描述

代码


主要通过修改控件的大小和位置来实现的

 private List<Panel> conditionPanels = new List<Panel>();
        int cN = 1;//控件的名字序号
        //自定义多条件查询
        private void button_condition_Click(object sender, EventArgs e)
        {
            if (cN == 3)
            {
                new WarningDialogForm("空间有限只能添加两个条件!").ShowDialog();
                return;
            }
            Panel newPanel = CreateConditionPanel();
            flowLayoutPanel1.Controls.Add(newPanel);
            cN++;
            conditionPanels.Add(newPanel);
        }
        private Panel CreateConditionPanel()
        {
            Panel panel = new Panel();
            panel.Size = new Size(370, 50);

            ComboBox condition = new ComboBox();
            condition.Name = $"condition{cN}";
            condition.DropDownStyle = ComboBoxStyle.DropDownList;
            condition.Items.AddRange(new object[] { "and", "or" });
            condition.Size = new Size(60, 20);
            condition.Location = new Point(1, 5);
            panel.Controls.Add(condition);

            TextBox valueTextBox1 = new TextBox();
            valueTextBox1.Name = $"valueTextBox{cN}";
            valueTextBox1.Size = new Size(95, 20);
            valueTextBox1.Location = new Point(62, 5);
            panel.Controls.Add(valueTextBox1);

            ComboBox conditionComboBox = new ComboBox();
            conditionComboBox.Name = $"conditionComboBox{cN}";
            conditionComboBox.DropDownStyle = ComboBoxStyle.DropDownList;
            conditionComboBox.Items.AddRange(new object[] { "=", "!=", ">", "<", "like" });
            conditionComboBox.Size = new Size(60, 20);
            conditionComboBox.Location = new Point(158, 5);
            panel.Controls.Add(conditionComboBox);

            TextBox valueTextBox2 = new TextBox();
            valueTextBox2.Name = $"valueTextBox{cN}";
            valueTextBox2.Size = new Size(95, 20);
            valueTextBox2.Location = new Point(219, 5);
            panel.Controls.Add(valueTextBox2);

            Button removeButton = new Button();
            removeButton.Name = $"removeButton{cN}";
            removeButton.Text = "-";
            removeButton.Size = new Size(20, 20);
            removeButton.Location = new Point(314, 5);
            removeButton.Click += (s, e) => RemovePanel(panel);
            panel.Controls.Add(removeButton);



            return panel;
        }

        private void RemovePanel(Panel panel)
        {
            flowLayoutPanel1.Controls.Remove(panel);
            conditionPanels.Remove(panel);
            cN--;
            panel.Dispose();
        }
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WinForm中动态添加自定义控件的方式有多种,下面是一种常见的方法: 1. 在代码中创建一个循环,根据需要的控件数量进行迭代。例如,可以使用for循环来决定控件的数量。 2. 在循环内部,创建自定义控件的实例。可以使用自定义控件的构造函数来创建控件实例,并设置控件的属性,如名称、大小和位置。 3. 将自定义控件添加到相应的容器控件中。可以使用容器控件的Controls属性来访问和添加子控件。使用Add方法将自定义控件添加到容器控件的Controls集合中。 4. 可以为自定义控件设置相应的事件处理程序。例如,可以为自定义控件的点击事件设置一个事件处理程序,以便在点击控件时执行特定的操作。 5. 最后,将容器控件添加到主窗体中,以便在应用程序中显示这些自定义控件。 下面是一个示例代码,演示了如何动态添加自定义控件(以麦田怪圈为例): ``` for (int i = 0; i < 5; i++) { Control.Refueller r1 = new Control.Refueller(); r1.sidePanel1.Click += new EventHandler(r1click); r1.Name = "jy" + i; r1.Size = new Size(220, 281); r1.Location = new Point(220 * i, 0); r1.Show(); panel1.Controls.Add(r1); } private void r1click(object sender, EventArgs e) { MessageBox.Show(this.Name); } ``` 在上述示例中,使用了一个for循环来创建了5个麦田怪圈的自定义控件,并将它们添加到名为panel1的容器控件中。同时,为每个控件的点击事件设置了一个事件处理程序r1click,以便在点击控件时弹出一个消息框。 请注意,以上示例代码仅为演示目的,并假设已经创建了自定义控件Refueller和相应的事件处理程序r1click。你可以根据自己的需求来调整代码,并在其中添加其他所需的控件和事件处理程序。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [C# winform 动态添加自定义控件](https://blog.csdn.net/qq_36074218/article/details/103765069)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [winform如何添加自定义控件,如何给自定义控件添加事件](https://blog.csdn.net/xiexiaodai/article/details/125040976)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值