想指定datagridview的指定列的属性类型,默认是我引用的日期类型,代码怎么写;

请教个问题,我引用了一个新日期类(如下图,这个类无法using来引入),目的就是想让datagridview中的第一列的类型,默认就是我引入的这个日期列,以免让用户需要手工录入的麻烦,目前是在前端属性可以直接选择该类型,若用代码的话,请问怎么实现;

img

img


```c#
private void btnsearch_Click(object sender, EventArgs e)
        {
            conn = new SqlConnection ("server= 192.168.100.247; database= Whmesinfo;User= Sa;Password=whyy@2021");

            conn.Open();

            sqlstring = "select * from w_prohourcount where isnull(proname,'') like '%" + textBox1.Text + "%'and isnull(probatchNo,'') like '%" 
                + textBox2.Text + "%' and isnull(batchNo,'') like '%" + textBox3.Text + "%'and [date] >= '"
                + dateTimePicker1.Value.ToString("yyyy-MM-dd HH:mm:ss") + "'and [date] <= '"
                + dateTimePicker2.Value.ToString("yyyy-MM-dd HH:mm:ss") + "'order by date asc";
              

            try
            {
                SqlCommand cmd = new SqlCommand(sqlstring,conn);

                SqlDataAdapter sda = new SqlDataAdapter();

                sda.SelectCommand = cmd;

                DataSet ds = new DataSet();

               sda.Fill(ds,"w_prohourcount");           

                dt = ds.Tables["w_prohourcount"];

                dataGridView1.DataSource = dt.DefaultView;

                this.dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True;

                dataGridView1.Columns[0].Visible = false;

                dataGridView1.Columns[1].HeaderText = "日期";              
                dataGridView1.Columns[2].HeaderText = "车间";
                dataGridView1.Columns[3].HeaderText = "班组";
                dataGridView1.Columns[4].HeaderText = "班次";
                dataGridView1.Columns[5].HeaderText = "工序";
                dataGridView1.Columns[6].HeaderText = "批号";
                dataGridView1.Columns[7].HeaderText = "产品批号";
                dataGridView1.Columns[8].HeaderText = "产品名称";
                dataGridView1.Columns[9].HeaderText = "规格";
                dataGridView1.Columns[10].HeaderText = "单位";
                dataGridView1.Columns[11].HeaderText = "当日产量";
                dataGridView1.Columns[12].HeaderText = "累积产量";
                dataGridView1.Columns[13].HeaderText = "完工状态";
                dataGridView1.Columns[14].HeaderText = "人数";
                dataGridView1.Columns[15].HeaderText = "工时";
                dataGridView1.Columns[16].HeaderText = "备注";

              

            }
            catch (Exception)
            {
                
                throw;
            }
            finally { conn.Close(); }
        }

```

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/194319
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:datagridview取消默认选中第一行或第一个单元格
  • 除此之外, 这篇博客: 解决 DataGridView 自动新增列问题中的 可能出现的问题 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    1. 若对 DataGridView 进行了数据绑定 DataBinding,使用以上方法后仍然会自动生成新列。
      对于这种问题,可以将自动生成列的 Visible 属性设为 false
  • 您还可以看一下 王进老师的跟着王进老师学开发之C#篇第五季:图书管理系统课程中的 获取出版社信息展示在DataGridView中小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    我可以通过以下代码来指定DataGridView中指定列的属性类型为自定义日期类型:

    using MyCustomDateClass;
    
    // 获取指定列的类型
    Type myCustomDateType = typeof(MyCustomDate);
    
    // 设置指定列的数据类型
    dataGridView1.Columns[0].ValueType = myCustomDateType;
    

    请注意,在上述代码中的"MyCustomDate"是你自己引用的日期类型的名称,请根据你实际引用的类名进行替换。

    这段代码使用了typeof关键字来获取自定义日期类型的Type对象,并将其赋值给指定列的ValueType属性。这样,当用户录入数据时,该列将默认使用自定义日期类型进行数据绑定和验证。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

这个你打开 Form名.Designer.cs 文件,在里面就有 IDE 自动生成的代码,你所有通过设计器设置的属性,本质上都会转换成代码,照着复制粘贴就可以了。