winform控件请教

william0992 2013-12-06 11:45:29
我这有一组控件,1个checkbox控件叫name,2个textbox控件分别叫name1,name2
怎么才能够通过下面的代码在选中name的时候也能操作name1和name2

我窗口面板放了上述这样好多相似的多组控件。我不想一组一组写代码

 private void Com(Control.ControlCollection c)
{
richTextBox1.Clear();
if (c.Count > 0)
{
foreach (Control c1 in c)
{
if (c1.GetType().ToString().Equals("System.Windows.Forms.CheckBox"))
{
if(((CheckBox)c1).Checked== true)
{
// richTextBox1.AppendText();
//
}
}

if (c1 != null)
{
Com(c1.Controls);
}
else
{
return;
}
}
}
else
{
return;
}
}
...全文
272 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzpdh 2013-12-07
  • 打赏
  • 举报
回复
你把第一组的名称定义成一个枚举或数组 定义一控件参数 循环调出 { for(1...N) 用this.FINDCO..后面忘了 按名字找到这个控件 然后赋值(取数也一样) }
超级橡树 2013-12-06
  • 打赏
  • 举报
回复
请老大们帮你做成一个自定义的用户控件。
bu_ge 2013-12-06
  • 打赏
  • 举报
回复
写个简单小例子

private void button2_Click(object sender, EventArgs e)
{
    for (int i = Convert.ToInt32('a'); i <= Convert.ToInt32('z'); i++)
    {
        test(this, Convert.ToChar(i).ToString(), Convert.ToChar(i) + "1", Convert.ToChar(i) + "2");
    }
}

void test(Form frm, string chk, string txt1, string txt2)
{
    Control c = frm.Controls.Find(chk, true)[0];
    (c as CheckBox).CheckedChanged += new EventHandler(
             (sender1, e1) =>
             {
                 (frm.Controls.Find(txt1, true)[0] as TextBox).Text = "啦啦啦";
                 (frm.Controls.Find(txt2, true)[0] as TextBox).Text = "德玛西亚";
             }
         );
}
bu_ge 2013-12-06
  • 打赏
  • 举报
回复
引用 4 楼 william0992 的回复:
没有什么关联,我就是名字起的相似:a,a1,a2;b,b1,b2;c,c1,c2;这样的而已, 其中纯字母的是checkbox控件,字母后面带数字的是textbox控件。 我也不知道怎么关联起来,知识都丢的差不多了 我想做的是,如果a被选中,获取a的text值赋值给richtextbox控件,获取a1和a2的text值计算,计算结果赋值给tichtextbox控件; 因为我有很多组这样的控件,我就想能不能直接写一个方法,遍历完checkbox一次搞定。 然后,不知道怎么去实现了
这样的话,我之前给你的代码就可以;
jianhenjh 2013-12-06
  • 打赏
  • 举报
回复
把字符串转换成控件名 Control c=this.Controls.Find("controlname",true)[0]; 你只要把控件名的字符串拼好就行了
william0992 2013-12-06
  • 打赏
  • 举报
回复
引用 7 楼 chenjiazheng009 的回复:
道理一样的呀,选中后,你对name1和name2进行操作不就行了,不知道名称可以在选中后 遍历当前页面控件
恩。我知道可以这样写,问题是我这有好十几组这样的。不想重复着每组都写一遍。我就想问问有没有可以写成一个方法的,直接调用就解决的方式。
chenjiazheng009 2013-12-06
  • 打赏
  • 举报
回复
道理一样的呀,选中后,你对name1和name2进行操作不就行了,不知道名称可以在选中后 遍历当前页面控件
william0992 2013-12-06
  • 打赏
  • 举报
回复
[quote=引用 5 楼 chenjiazheng009 的回复:] 额。name1和name2是textbox控件。
chenjiazheng009 2013-12-06
  • 打赏
  • 举报
回复
有一种方法就是,在name勾选时,触犯一个事件用来更改name1和name2的勾选状态,以下是代码 private void checkBox1_CheckedChanged(object sender, EventArgs e) { try { if (this.name.Checked) { this.name1.Checked = true; this.name2.Checked = true; } } catch (Exception es) { MessageBox.Show(es.Message); } } 这就可以了
william0992 2013-12-06
  • 打赏
  • 举报
回复
没有什么关联,我就是名字起的相似:a,a1,a2;b,b1,b2;c,c1,c2;这样的而已, 其中纯字母的是checkbox控件,字母后面带数字的是textbox控件。 我也不知道怎么关联起来,知识都丢的差不多了 我想做的是,如果a被选中,获取a的text值赋值给richtextbox控件,获取a1和a2的text值计算,计算结果赋值给tichtextbox控件; 因为我有很多组这样的控件,我就想能不能直接写一个方法,遍历完checkbox一次搞定。 然后,不知道怎么去实现了
bu_ge 2013-12-06
  • 打赏
  • 举报
回复

Control c = this.Controls.Find("checkBox1", true)[0];
(c as CheckBox).CheckedChanged += new EventHandler(
         (sender1, e1) =>
         {
            //
         }
     );
你控件每组控件考什么关联?? 是已经做了自定义控件? 还是不同窗体都叫这些名字? 如果没有什么关联性就得自己做对应了

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧