دسته بندی ها
21:48 1401/05/17

نحوه استفاده از DateTimePicker در DataGridView در C#

مشخصات سوال کننده :
کاربر : Radman     امتیاز کاربر : 169     رتبه کاربر : 9
دسته بندی : سی شارپ

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2880
1 نظر
fateme : به طور پیش فرض سلولهای DataGridView از کامپوننت DateTimePicker پشتیبانی نمیکنن. شما میتونید از کامپوننت های DevExpress برای این منظور استفاده کنید.

امتیاز کاربر : 1635   رتبه کاربر : 2   تاریخ ثبت : 10:12 1401/05/17
هوش مصنوعی

پاسخ هوش مصنوعی

بله، شما می توانید از کامپوننت DateTimePicker در DataGridView استفاده کنید. برای این کار می توانید یک ستون از نوع DataGridViewDateTimePickerCell ایجاد کنید که به کاربران اجازه می دهد تاریخ را به راحتی انتخاب کنند. در زیر یک مثال ساده آورده شده است:

using System;
using System.Windows.Forms;

public class MyDataGridView : Form
{
    private DataGridView dataGridView;

    public MyDataGridView()
    {
        dataGridView = new DataGridView();
        dataGridView.Dock = DockStyle.Fill;
        dataGridView.AutoGenerateColumns = false;

        // ایجاد ستون تاریخ
        DataGridViewColumn dateColumn = new DataGridViewDateTimePickerColumn();
        dateColumn.HeaderText = "تاریخ";
        dateColumn.Name = "dateColumn";
        dataGridView.Columns.Add(dateColumn);

        // اضافه کردن مزاحم برای مقداردهی اولیه
        dataGridView.Rows.Add(DateTime.Now);

        this.Controls.Add(dataGridView);
        this.Load += new EventHandler(MyDataGridView_Load);
    }

    private void MyDataGridView_Load(object sender, EventArgs e)
    {
        // اعمال تنظیمات لازم
    }

    [STAThread]
    public static void Main()
    {
        Application.EnableVisualStyles();
        Application.Run(new MyDataGridView());
    }
}

// کلاس DataGridViewDateTimePickerColumn
public class DataGridViewDateTimePickerColumn : DataGridViewColumn
{
    public DataGridViewDateTimePickerColumn() : base(new DataGridViewDateTimePickerCell())
    {
    }

    public override DataGridViewCell CreateCellInstance()
    {
        return new DataGridViewDateTimePickerCell();
    }
}

// کلاس DataGridViewDateTimePickerCell
public class DataGridViewDateTimePickerCell : DataGridViewTextBoxCell
{
    public override Type EditType => typeof(DataGridViewDateTimePickerEditingControl);

    protected override void OnEnter(int rowIndex, DataGridViewCellStateOld state)
    {
        base.OnEnter(rowIndex, state);
        this.DataGridView.BeginEdit(true);
    }
}

در این مثال، یک کلاس به نام DataGridViewDateTimePickerColumn و یک کلاس به نام DataGridViewDateTimePickerCell ایجاد شده است. با استناد به این کلاس ها، شما می توانید ستون های تاریخ را در DataGridView خود اضافه کنید. در نهایت، هنگامی که کاربر بر روی سلول کلیک کند، یک کنترل DateTimePicker برای انتخاب تاریخ نمایش داده می شود.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 01:51 1401/05/18

آموزش انتخاب تاریخ در DataGridView در سی شارپ

این کار رو شما خیلی راحت می تونید با اضافه کردن یک کنترل DateTimePicker به صورت داینامیک به دیتاگریدویو انجام بدید.

  • یک پروژه جدید از نوع Windows Form ایجاد کنید.
  • یک کنترل DataGridView روی فرم خودتون قرار بدید.
  • 3 ستون به نام های "نام" و "فامیلی" و "تاریخ تولد" در DataGridView خودتون اضافه کنید.
  • حالا DataGridView رو انتخاب کنید و از قسمت event ها در Solution Explorer روی خاصیت CellClick دو بار کلیک کنید.
  • کدهای زیر رو در متد CellClick بنویسید:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
   if (e.ColumnIndex == 2)
   {
      DateTimePicker dtp = new DateTimePicker();
      dataGridView1.Controls.Add(dtp);
      dtp.Format = DateTimePickerFormat.Short;
      Rectangle displaycalender = dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
      dtp.Size = new Size(displaycalender.Width, displaycalender.Height);
      dtp.Location = new Point(displaycalender.X, displaycalender.Y);
   }
}

حالا اگر پروژتون رو اجرا کنید می بینید که به راحتی میتونید از کنترل تاریخ در جدول استفاده کنید.

استفاده از datetimepicker در datagridview در سی شارپ

 

دانلود سورس پروژه

ویرایش شده در سه شنبه 18 مرداد 1401 ساعت 02:00:27
به این پاسخ امتیاز بدهید    2
امتیاز: 1664 رتبه: 1
1 نظر
Radman : ممنون مهندس مشکلم برطرف شد

امتیاز کاربر : 169   رتبه کاربر : 9   تاریخ ثبت : 01:20 1401/05/19
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود