Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按钮组和复选框C打开单个网页_C# - Fatal编程技术网

C# 按钮组和复选框C打开单个网页

C# 按钮组和复选框C打开单个网页,c#,C#,我希望在一个带有复选框的组中创建4个包含8项的组。在这些检查后,我想打开个人网页。我想可以点击组按钮1打开8页,或者单独检查一个项目并让它打开网页。我的问题是,当我单击“组1”按钮时,并非所有页面都打开。通常只有6页,但我打开了随机数目的页面。如果我单击“个人”,页面将很好地打开。下面是一段代码 private void btnGroup1_Click(object sender, EventArgs e) { foreach (Control c in groupBox1.Contro

我希望在一个带有复选框的组中创建4个包含8项的组。在这些检查后,我想打开个人网页。我想可以点击组按钮1打开8页,或者单独检查一个项目并让它打开网页。我的问题是,当我单击“组1”按钮时,并非所有页面都打开。通常只有6页,但我打开了随机数目的页面。如果我单击“个人”,页面将很好地打开。下面是一段代码

private void btnGroup1_Click(object sender, EventArgs e)
{
    foreach (Control c in groupBox1.Controls)
    {
        if (c is CheckBox)
        {
            CheckBox cb = (CheckBox)c;
            if (cb.Checked == false)
            {
                cb.Checked = true;
                btnGroup1.Text = "Uncheck 1";

            }
            else
            {
                cb.Checked = false;
                btnGroup1.Text = "Check 1";
            }
        }
    }
}

private void chkNYALL_CheckedChanged(object sender, EventArgs e)
{
    if (chkNYALL.Checked == true)
    {
        chkNYALL.Checked = true;
        System.Diagnostics.Process.Start("www.google.com");
    }
    else
    {
        chkNYALL.Checked = false;
    }
}

private void NYBAT_CheckedChanged(object sender, EventArgs e)
{
    if (chkNYBAT.Checked == true)
    {
        chkNYBAT.Checked = true;
        System.Diagnostics.Process.Start("www.google.com");
    }
    else
    {
        chkNYBAT.Checked = false;
    }
}

这里有一个快速的样品,可以让你去。 在这个代码段中,我动态地创建了2个GroupBox,在其中动态地创建了多个复选框和1个按钮。每个复选框都订阅了CheckedChanged事件处理程序,按钮订阅了Click事件

选中时,复选框将触发页面的打开。 单击该按钮时,将触发打开所有选中的页面

您会注意到我使用了CheckBox.Tag属性来承载URL值


我不确定这是否是问题所在,但您的一些代码似乎没有真正意义。在CheckedChanged方法中,如果if语句已将复选框的Checked属性设置为该值,为什么还要设置该复选框的Checked属性?从bool获取bool值的首选方法不是比较它,而是只使用bool值,即如果chkNYBAT.Checked{…}。在btnGroup1中单击,btnGroup1.Text将只显示最后一个复选框的结果,因为它处于循环中,所以我不确定这是为了什么。我对这个问题有一个猜测。单击“组”按钮之前是否已选中某些复选框?因为你的代码会取消勾选这些,然后就不会开始处理这些。谢谢你,Blaze,我很感谢你的帮助。祝你有美好的一天。
using System;
using System.Drawing;
using System.Windows.Forms;

namespace OpenWebPageOnCheckboxCheck_46934789
{
    public partial class Form1 : Form
    {
        GroupBox gb1 = new GroupBox();
        GroupBox gb2 = new GroupBox();
        Button btn1 = new Button();
        Button btn2 = new Button();
        public Form1()
        {
            InitializeComponent();
            InitGroupBoxes();
            AddCheckboxesToGroup("check1", "www.google.com", gb1);
            AddCheckboxesToGroup("check2", "www.yahoo.com", gb1);
            AddCheckboxesToGroup("check3", "www.bing.com", gb1);
            AddCheckboxesToGroup("check4", "www.duckduckgo.com", gb1);

            AddCheckboxesToGroup("check1", "www.wikipedia.com", gb2);
            AddCheckboxesToGroup("check2", "www.stackoverflow.com", gb2);

            InitButtons();
        }

        private void InitButtons()
        {
            btn1.Text = "Open checked";
            btn1.Click += Btn1_Click;
            btn1.Location = new Point(145, 5);
            gb1.Controls.Add(btn1);

            btn2.Text = "Open checked";
            btn2.Click += Btn2_Click;
            btn2.Location = new Point(145, 5);
            gb2.Controls.Add(btn2);
        }

        private void Btn2_Click(object sender, EventArgs e)
        {
            foreach (Control item in gb2.Controls)
            {
                if (item is CheckBox)
                {
                    if (((CheckBox)item).Checked)
                    {
                        LaunchPage(item.Tag.ToString());
                    }
                }
            }
        }

        private void Btn1_Click(object sender, EventArgs e)
        {
            foreach (Control item in gb1.Controls)
            {
                if (item is CheckBox)
                {
                    if (((CheckBox)item).Checked)
                    {
                        LaunchPage(item.Tag.ToString());
                    }
                }
            }
        }

        private void AddCheckboxesToGroup(string cbText, string cbValue, GroupBox gb)
        {
            CheckBox cb = new CheckBox();
            cb.CheckedChanged += Cb_CheckedChanged;
            cb.Text = cbText;
            cb.Tag = cbValue;
            if (gb.Controls.Count > 0)
            {
                cb.Location = new Point(gb.Controls[gb.Controls.Count - 1].Location.X, gb.Controls[gb.Controls.Count - 1].Location.Y + gb.Controls[gb.Controls.Count - 1].Height + 2);
            }
            else
            {
                cb.Location = new Point(5, 5);
            }
            gb.Controls.Add(cb);
        }

        private void Cb_CheckedChanged(object sender, EventArgs e)
        {
            if (((CheckBox)sender).Checked)
            {
                LaunchPage(((CheckBox)sender).Tag.ToString());
            }
        }

        private void LaunchPage(string pageURL)
        {
            System.Diagnostics.Process.Start(pageURL);
        }

        private void InitGroupBoxes()
        {
            gb1.Dock = DockStyle.Top;
            gb1.BackColor = Color.Aqua;
            gb2.Dock = DockStyle.Bottom;
            gb2.BackColor = Color.DarkRed;
            this.Controls.Add(gb1);
            this.Controls.Add(gb2);
        }
    }
}