星期二, 8月 26, 2014

[C#] 奇數列、偶數列背景顏色

不論任何語言,Grid 奇偶數列變色,好像是 Grid 變色的入門考題了,來練習一下
namespace OddEvenRowBG
{
    public partial class OddEvenRowBG : Form
    {
        public OddEvenRowBG()
        {
            InitializeComponent();
        }

        private void OddEvenRowBG_Load(object sender, EventArgs e)
        {
            // 建立 DataGridView 資料來源
            DataTable dt = new DataTable();

            dt.Columns.Add("ColEmpNO", typeof(int));
            dt.Columns.Add("ColEmpName", typeof(string));
            dt.Columns.Add("ColHireDate", typeof(DateTime));

            dt.Rows.Add(1, "趙一", new DateTime(1963, 7, 7));
            dt.Rows.Add(2, "洪二", new DateTime(1965, 5, 10));
            dt.Rows.Add(3, "張三", new DateTime(1981, 12, 11));
            dt.Rows.Add(4, "李四", new DateTime(1980, 1, 9));
            dt.Rows.Add(5, "王五", new DateTime(1973, 9, 9));

            if (dt.PrimaryKey.Length == 0) dt.Constraints.Add("PK", dt.Columns["colEmpNO"], true);
            dgvData.DataSource = dt;

            dgvData.AllowUserToAddRows = false;

            // 下列方法二擇一
            // 方法一:利用 DataGridView 本身屬性來完成
            dgvData.DefaultCellStyle.BackColor = Color.DarkGray;
            dgvData.AlternatingRowsDefaultCellStyle.BackColor = Color.DarkOliveGreen;

            // 方法二:自訂函數來完成
            OddEvenColor(dgvData);
        }

        public void OddEvenColor(DataGridView dgv)
        {
            if (dgv.Rows.Count == 0) return;
   
            // 下列方法二擇一
            // foreach 作法
            foreach (DataGridViewRow row in dgv.Rows)
            { 
                int index = dgv.Rows.IndexOf(row);
                if (index % 2 == 0)
                {
                    row.DefaultCellStyle.BackColor = Color.DarkGray;
                }
                else
                {
                    row.DefaultCellStyle.BackColor =  Color.DarkOliveGreen;
                }
            }

            // for 作法
            for (int i = 0; i < dgv.Rows.Count; i++)
            {
                if (i % 2 == 0)
                {
                    dgv.Rows[i].DefaultCellStyle.BackColor = Color.DarkGray;
                }
                else
                {
                    dgv.Rows[i].DefaultCellStyle.BackColor = Color.DarkOliveGreen;
                }
            }
        }
    }
}

沒有留言:

張貼留言