繁体   English   中英

如何在DataGrid C#Windows CE中更改不同行的颜色

[英]How to change color of different rows in datagrid c# windows ce

我尝试将AC#应用程序(通过条形码收集产品)开发到具有紧凑框架3.5的Windows CE手持设备

我有一个datagrid,并且datagrid通过sql与datatable绑定。 我的数据网格中有4列,第3列代表需要收集的产品数量,最后一列带有默认值0(收集的数量)。 每当用户输入产品代码时,产品数量就会增加1。

当用户输入相应的产品代码时,我想将该行的背景颜色设为蓝色(以显示正在收集的产品)

如果用户收集了所需的产品,我还想将背景色设为绿色。

我尝试按选定的索引为行着色,但是它不起作用。 选择消失后,颜色消失。

这是收集所需数量产品时的屏幕图片。 在此处输入图片说明

这是我想查看已处理行的时间。 在此处输入图片说明

下面是我的文本框keypress事件的代码(输入产品代码)

        private void txtUrunkod_KeyPress(object sender, KeyPressEventArgs e)
    {
        foreach (System.Data.DataColumn col in dt.Columns) col.ReadOnly = false; 
        if (e.KeyChar == (char)Keys.Enter)
        {
            islemkod = txtUrunkod.Text;
            islemkod.Trim();

            if (islemkod.Contains('/'))
            { 
                serikodbol = islemkod.Split('/');
                urunKodum = serikodbol[0];
                DataRow row = dt.Select("urunkodu='" + urunKodum + "'").FirstOrDefault();
                int guncelle = Convert.ToInt32(row[3]);
                guncelle++;
                row[3] = guncelle;
            }
            else if (islemkod.Length == 8)
            {
                SqlCommand cmd = new SqlCommand("exec MY_TOPUK_BILGI_GETIR '" + islemkod + "'", conStr);
                conStr.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                uk = new DataTable();
                uk.Load(dr);
                conStr.Close();
                //toplamaGrid.Select(0);
                foreach (DataRow row2 in uk.Rows)
                {
                    urunKodum = row2[0].ToString();
                }
                DataRow row = dt.Select("urunkodu='" + urunKodum + "'").FirstOrDefault();
                int guncelle = Convert.ToInt32(row[3]);
                guncelle++;
                row[3] = guncelle;
                int index = -1;
                bool found = false;

                foreach (DataRow datr in dt.Rows)
                {
                    index++;
                    string d = datr["urunkodu"].ToString();
                    if (datr[0].ToString() == urunKodum)
                    {
                        found = true;
                        break;
                    }
                }


                if (found && !row[2].Equals(row[3]))
                {

                    toplamaGrid.Select(index);
                    toplamaGrid.SelectionBackColor = Color.Blue;
                }
                else if (row[2].Equals(row[3]))
                {
                    toplamaGrid.Select(index);
                    toplamaGrid.SelectionBackColor = Color.Green;
                    //toplamaGrid.UnSelect(index);
                }



            }

            else if (islemkod.Length == 7 && islemkod[0] == 'P')
            {

            }

            else//islemkod.Length != 8 && !islemkod.Contains('/')
            {//
                urunKodum = txtUrunkod.Text;
                txtUrunkod.Visible = false;
                lblurunkod.Visible = false;
                txtifAdres.Visible = true;
                lbladressor.Visible = true;
                txtifAdres.Focus();

            }
            updated = true;
            txtUrunkod.Text = "";
            sonindex = 0;
        }
    }

我找不到有关此的许多信息。 任何帮助都很重要。 谢谢你的帮助!

首先,我遇到了同样的问题。 利用DataGridFormatCellEventArgs为解决方案着色。

在此处解释将DataGrid文件添加到链接中的代码中。 DataGridFormatCellEventArgs.cs和FormattableTextBoxColumn.cs )这些文件包含用于进行着色的Paint类。

不同的例子

希望我能帮上忙。 如果您遇到困难,我可以举一个自己的代码举例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM