C# (所有高階物件導向語言) 利用 ArrayList+物件型態轉換 實現 UI元件的物件陣列 範例

C# (所有高階物件導向語言) 利用 ArrayList+物件型態轉換 實現 UI元件的物件陣列 範例

C# (所有高階物件導向語言) 利用 ArrayList+物件型態轉換 實現 UI元件的物件陣列 範例

 

資料來源:https://github.com/jash-git/CS-UI-UserControl-

 

Grp_ckbtext.cs

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;
using System.Collections;

namespace JASH
{
    public partial class Grp_ckbtext : UserControl
    {
        public ArrayList m_ALckvtext = new ArrayList();
        private String m_StrText;
        [Browsable(true), Category(“自訂屬性”), Description(“編號區間顯示文字”)]
        public String StrText
        {
            get {
                    m_StrText = checkBox1.Text;
                    return m_StrText;
                }
            set {
                    m_StrText = value;
                    checkBox1.Text = m_StrText;
                }
        }
        private bool m_blnChildsEnabled;
        [Browsable(true), Category(“自訂屬性”), Description(“判斷子元件是否啟用”)]
        public bool blnChildsEnabled
        {
            get
            {
                m_blnChildsEnabled = checkBox1.Checked;
                return m_blnChildsEnabled;
            }
            set
            {
                m_blnChildsEnabled = value;
                checkBox1.Checked = m_blnChildsEnabled;
            }
        }
        public Grp_ckbtext()
        {
            InitializeComponent();

            m_ALckvtext.Clear();
            m_ALckvtext.Add(ckbtext1);
            m_ALckvtext.Add(ckbtext2);
            m_ALckvtext.Add(ckbtext3);
            m_ALckvtext.Add(ckbtext4);
            m_ALckvtext.Add(ckbtext5);
            m_ALckvtext.Add(ckbtext6);
            m_ALckvtext.Add(ckbtext7);
            m_ALckvtext.Add(ckbtext8);

            for (int i = 0; i < m_ALckvtext.Count; i++)
            {
                ((ckbtext)m_ALckvtext[i]).Enabled = checkBox1.Checked;//((ckbtext)m_ALckvtext[i]).blnUsed = ((CheckBox)sender).Checked;
            }

        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            for (int i = 0; i < m_ALckvtext.Count; i++)
            {
                ((ckbtext)m_ALckvtext[i]).Enabled = ((CheckBox)sender).Checked;//((ckbtext)m_ALckvtext[i]).blnUsed = ((CheckBox)sender).Checked;
            }

        }

        private void ckbtexts_ck_Changed(object sender, EventArgs e)
        {
            /*
            int int_sum=0;
            for (int i = 0; i < m_ALckvtext.Count; i++)
            {
                if (((ckbtext)m_ALckvtext[i]).blnUsed)
                {
                    int_sum++;
                }
            }
            if (int_sum == 8)
            {
                checkBox1.Checked=true;
            }
            if(int_sum ==0)
            {
                checkBox1.Checked = false;
            }
            */ 
        }
    }
}

ckbtext.cs

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 JASH
{
    
    public partial class ckbtext : UserControl
    {
        private String m_StrText;
        [Browsable(true), Category(“自訂屬性”), Description(“元件內容值”)]
        public String StrText
        {
            get {
                    m_StrText = textBox1.Text;
                    return m_StrText;
                }
            set {
                    m_StrText = value;
                    textBox1.Text = m_StrText;
                }
        }
        private bool m_blnUsed;
        [Browsable(true), Category(“自訂屬性”), Description(“元件啟用判斷”)]
        public bool blnUsed
        {
            get {
                    m_blnUsed = checkBox1.Checked;
                    return m_blnUsed;
                }
            set { 
                    m_blnUsed = value;
                    checkBox1.Checked = m_blnUsed;
                }
        }
        public ckbtext()
        {
            InitializeComponent();
            textBox1.Enabled = checkBox1.Checked;
            m_blnUsed = checkBox1.Checked;
        }

        public event EventHandler ck_Changed;//20170209 將內部事件轉傳
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            textBox1.Enabled = ((CheckBox)sender).Checked;
            //正規作法 把內部事件轉到表單事件 2017/01/13
            if (ck_Changed != null)
            {
                ck_Changed(checkBox1, e);
                return;
            }
        }

        public event EventHandler Value_Changed;//20170209 將內部事件轉傳
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            //正規作法 把內部事件轉到表單事件 2017/01/13
            if (Value_Changed != null)
            {
                Value_Changed(textBox1, e);
                return;
            }
        }
    }
}

 

 

 

 

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *