当前位置:编程学习 > C#/ASP.NET >>

遍历自定义控件求助

目标:
1、一个按钮与一个标签形成自定义控件UA。
2、按钮的图片动态读取自某目录下(必须),标签的文字是这个图片的名称。
3、按钮按下时,按钮的TEXT修改为“V”,再次按下为“”。
4、调用页面中增加数个UA,同时有其它控件,要能够知道一共有多少个UA的TEXT是“V”。

目前状态:
1、UA定义
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace aa
{
    public delegate void ClickHandler(object sender, EventArgs e);

    public partial class zz : UserControl
    {    
        public event ClickHandler OnClickMe = null;

        private Image img;
        public Image Img
        {
            get { return this.button1.BackgroundImage ; }
            set
            {
                this.button1 .BackgroundImage   = value;
                Invalidate();
            }
        }
        private string imgName;

        public string ImgName
        {
            get { return imgName; }
            set
            {
                imgName = value;
                this.label1.Text = value;
            }
        }

        private string btnText="";
        public string BtnText
        {
            get { return btnText; }
            set
            {
                btnText = value;
                this.button1.Text = value;
            }
        }

       

        public zz()
        {
            InitializeComponent();
           this.button1 .Click += new EventHandler(UserControl1_Click);           
        }


        private void UserControl1_Click(object sender, EventArgs e)
        {
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (OnClickMe != null)
                OnClickMe(sender, e);           

        }    
    }
}


2、遍历控件以统计有多少个“V”
foreach (System.Windows.Forms.Control cc in this.Controls)
{
foreach (System.Windows.Forms.Control child in cc.Controls)
{
      if (child is UA )
      {
if (child.Text  =="V")
{
                   
问题
1、 外部点击事件的SENDER总是BUTTON,不是UA,所以不能遍历到UA --------------------编程问答-------------------- Controls类 是所有控件的父类  你的UA是什么控件?  --------------------编程问答-------------------- 描述的不清,第4条是加载页面 调用 用户控件,只有当你点下按钮时候才知道有多少个"V",加载页面时候肯定没有点击啊 --------------------编程问答-------------------- 没有看太清楚楼主的描述。
控件的操作,用control。在生成控件的时候,可以指定id或者name的,然后在遍历的时候,通过唯一的id(或者name,如果你的name唯一的话)来判断。
希望对你有帮助。 --------------------编程问答-------------------- 开发环境:C#  VS2008 WINFORM

ua是我自定义的控件。

--------------------编程问答-------------------- 使用foreach简单搞定 --------------------编程问答-------------------- foreach (Control control in this.Controls)
            {
                if (control is UA)
                {
                    UA ua1 = (UA)control;
                    if(ua1.Text = "1234")
                          {
                            ......
                          }
                }
            } --------------------编程问答-------------------- 兄弟,我在自己电脑上运行了一次,可以出现你说的效果
只是我用的是电脑是已经存在的空间,你结合着看看。
 int i = 0;
            foreach (Control control in this.Controls)
            {
                if (control is TextBox)
                {
                    TextBox tb = (TextBox)control;
                    if (tb.Text == "1234")
                    {
                        i++;
                    }
                }
            }
            MessageBox.Show("共有"+i+"个textbox");
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,