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