从一组福彩12选5走势图中获取DataRow从所选福彩12选5走势图

Dualshck012.

成员
加入
2018年1月14日
消息
21
编程经验
1-3
我想知道解决方法从FlutLayoutPanel中从一组福彩12选5走势图(ComboBox)中从所选福彩12选5走势图(ComboBox)中获取DataRow并将值传递给变量
以下是基于数据库添加福彩12选5走势图的代码。我尝试过通过MessageBox测试每个创建福彩12选5走势图检索的DataRow ID。

C#:
private void RetreiveAllpriorityRequest()
        {
            string query210A = "select statdesc, jorstatID from  ihsasstat where statactv = 'A' ";
            mysqlconstring.conn2.Open();
            mysqlconstring.cmda = mysqlconstring.conn2.CreateCommand();
            mysqlconstring.cmda.CommandType = CommandType.Text;
            mysqlconstring.cmda.CommandText = query210A;
            mysqlconstring.cmda.ExecuteNonQuery();
            mysqlconstring.adapta.SelectCommand = mysqlconstring.cmda;
            mysqlconstring.adapta.Fill(mysqlconstring.table3);

            foreach (DataRow DatRow in mysqlconstring.table3.Rows)
            {
                CheckBox chk = new CheckBox();
                chk.Width = 240;
                chk.FlatStyle = FlatStyle.Flat;
                //font here
                chk.Text = DatRow["statdesc"].ToString();
                //chk.CheckedChanged += new EventHandler(CheckBox_Checked);
                Jor_icts_prior_flw_pnel.AutoSize = true;
                Jor_icts_prior_flw_pnel.Controls.Add(chk);       
                    
//MessageBox.Show(DatRow["jorstatID"].ToString());
            }
            mysqlconstring.conn2.Close();
        }
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,732
地点
悉尼,澳大利亚
编程经验
10+
Every control, including both CheckBoxes and ComboBoxes, has a Tag property for arbitrary data storage. You can assign the corresponding DataRow to the Tag of each control when you create it, then get it back again there at any time. The property is type Object, so you'll need to cast as type DataRow.

The alternative would be to use your own custom control that inherits CheckBox and adds a DataRow property.
 

Dualshck012.

成员
加入
2018年1月14日
消息
21
编程经验
1-3
我尝试了这个,但它没有得到布尔的真实条件来获取MessageBox工作,除非我将值更改为False。

C#:
foreach (DataRow DatRow in mysqlconstring.table3.Rows)
            {
                CheckBox chk = new CheckBox();
                chk.Width = 240;
                chk.FlatStyle = FlatStyle.Flat;
                chk.Text = DatRow["statdesc"].ToString();
                chk.CheckedChanged += new EventHandler(CheckBox_CheckedChanged);

                Jor_icts_prior_flw_pnel.AutoSize = true;
                Jor_icts_prior_flw_pnel.Controls.Add(chk);  
            }

        }
        public void CheckBox_CheckedChanged(object sender, EventArgs e)
        {
            foreach (DataRow DatRow in mysqlconstring.table3.Rows)
            {
                CheckBox chk = new CheckBox();
                if (chk.Checked == true)
                {
                    MessageBox.Show(DatRow["jorstatID"].ToString());
                }
            }
        }

但我只设法在MessageBox中显示所有DataRow值,而不是根据所选复选框
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,903
地点
切萨皮克,va.
编程经验
10+
在第18行,您正在创建复选框的全新实例。它是您在第3行创建的同一个实例。

By convention, the sender parameter is the object for which the event was firing. You just need to cast it to the right type.
 

Dualshck012.

成员
加入
2018年1月14日
消息
21
编程经验
1-3
在第18行,您正在创建复选框的全新实例。它是您在第3行创建的同一个实例。

By convention, the sender parameter is the object for which the event was firing. You just need to cast it to the right type.
修改了checkbox_checkedChanged事件,最后工作。


C#:
        public void CheckBox_CheckedChanged(object sender, EventArgs e)
        {
            foreach (DataRow DatRow in mysqlconstring.table3.Rows)
            {

                CheckBox chk = (sender as CheckBox);
                
            
                if (chk.Checked == true)
                {
                    MessageBox.Show(DatRow["jorstat"].ToString());
                }

            }
        }

但是,由于循环,我通过MessageBox通过MessageBox获取DataRow中的所有值,而不是基于所选复选框福彩12选5走势图的一个值。
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,903
地点
切萨皮克,va.
编程经验
10+
Why do you need the foreach loop?
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,903
地点
切萨皮克,va.
编程经验
10+
重新读完#2。
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,732
地点
悉尼,澳大利亚
编程经验
10+
你读过#2帖子吗?你做了它的说法吗?将DataRow分配给福彩12选5走势图的标记属性,当您创建它时。在事件处理程序中,首先获取福彩12选5走势图,然后从其标记属性获取DataRow。没有循环。
 

Dualshck012.

成员
加入
2018年1月14日
消息
21
编程经验
1-3
我的解决方案和现在工作..


C#:
public void CheckBox_CheckedChanged(object sender, EventArgs e)
        {
            CheckBox chk = (sender as CheckBox);
            
            if (chk.Checked == true)  //if a checkbox control is checked, get id of checkbox control in database
            {

                string query210B = "select statdesc, jorstat from ihsasstat where statactv = 'A' and statdesc = '" + chk.Text.ToString() + "'";

                mysqlconstring.cmd = mysqlconstring.conn2.CreateCommand();
                mysqlconstring.cmd.CommandType = CommandType.Text;
                mysqlconstring.cmd.CommandText = query210B;
                mysqlconstring.conn2.Open();
                mysqlconstring.reader3 = mysqlconstring.cmd.ExecuteReader();
                while (mysqlconstring.reader3.Read())
                {
                    MessageBox.Show(mysqlconstring.reader3["jorstat"].ToString());
                }
                mysqlconstring.conn2.Close();
            }
        } //04/15/2021 10:37PM

我的新问题现在是复选框功能本身,因为我知道我应该使用单选按钮而不是复选框福彩12选5走势图,使我的工作更轻松,但是有没有办法,即我点击流程中的某个复选框控制,将取消选中其他复选框以避免多个选择。我正在尝试这样的东西,但我无法设法将其与代码集成。

C#:
private void CheckBox_ItemCheck(object sender, ItemCheckEventArgs e)
        {
            Checkbox chkgrp
            for (int chklst = 0; chklst < chkgrp.Items.Count; ++chklst)
                if (chklst != e.Index)
                   chkgrpSetItemChecked(chklst, false);
        }
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,732
地点
悉尼,澳大利亚
编程经验
10+
Why are you apparently handling an ItemCheck event? CheckBox controls don't have any such event. That might apply to a CheckedListBox but not individual CheckBox controls. CheckBox controls have a CheckedChanged event and that is the event you should be handling. You can handle the event for all the controls with the same method and then get the specific control inside the event handler, e.g.
C#:
private void CheckBoxes_CheckedChanged(object sender, EventArgs e)
{
    var currentCheckBox = (CheckBox) sender;
    
    if (currentCheckBox.Checked)
    {
        // The current box has been checked so uncheck the others in the group.
        var otherCheckBoxes = someContainer.Controls
                                           .OfType<CheckBox>()
                                           .Except(new[] {currentCheckBox})
                                           .ToArray();
        
        foreach (var otherCheckBox in otherCheckBoxes)
        {
            otherCheckBox.Checked = false;
        }
    }
}
 

Dualshck012.

成员
加入
2018年1月14日
消息
21
编程经验
1-3
Why are you apparently handling an ItemCheck event? CheckBox controls don't have any such event. That might apply to a CheckedListBox but not individual CheckBox controls. CheckBox controls have a CheckedChanged event and that is the event you should be handling. You can handle the event for all the controls with the same method and then get the specific control inside the event handler, e.g.
C#:
private void CheckBoxes_CheckedChanged(object sender, EventArgs e)
{
    var currentCheckBox = (CheckBox) sender;
    
    if (currentCheckBox.Checked)
    {
        // The current box has been checked so uncheck the others in the group.
        var otherCheckBoxes = someContainer.Controls
                                           .OfType<CheckBox>()
                                           .Except(new[] {currentCheckBox})
                                           .ToArray();
        
        foreach (var otherCheckBox in otherCheckBoxes)
        {
            otherCheckBox.Checked = false;
        }
    }
}
我认为谢谢,这是来自复选框列表项福彩12选5走势图
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,732
地点
悉尼,澳大利亚
编程经验
10+
我认为谢谢,这是来自复选框列表项福彩12选5走势图
If you're talking about a WinForms control then it's a CheckedListBox. CheckBoxList is an ASP.NET Web Forms server control and it has no such event. Correct nomenclature is important because there are lots of different things with the same or similar name. No harm done in this case but that will not always be so, so you should endeavour to always refer to things by their actual, correct name.
 
最佳 底部