Как настроить mindate и maxdate в winform Datagridview Дата / время Выбор элемента управления? - PullRequest
0 голосов
/ 19 декабря 2011

Я использую Winform And C #.

В этом я добавил ячейку каландра в элементе управления datagridview, используя код ссылки ниже.

Это прекрасно работает.

http://msdn.microsoft.com/en-us/library/7tas5c80.aspx.

Мой код для добавления элемента управления календаря ....

 foreach (DataGridViewRow row in this.dataGridView2.Rows)
                {
                    row.Cells[4].Value = DateTime.Now;                    
                }

enter image description here

Я знаю, что при обычном управлении доступны свойства MinDate и MaxDate.

dateTimePicker1.MinDate = DateTime.Today;

dateTimePicker1.MaxDate = DateTime.Today.AddYears( 1 );

Но я хочу установить минимальную и максимальную дату во всех элементах управления каландром в столбце представления таблицы данных.

Как реализовать минимальную и максимальную дату в элементе управления датой и временем представления данных для всех строк.,

Пожалуйста, помогите мне. ,,

Обновленный вопрос

 public class CalendarCell : DataGridViewTextBoxCell
        {

            public CalendarCell()
                : base()
            {
                // Use the short date format.
                this.Style.Format = "d";
            }

            // For Min And Max DATE
            public DateTime MaxDate { get; set; }
            public DateTime MinDate { get; set; }

            public override void InitializeEditingControl(int rowIndex, object
                initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
            {
                // Set the value of the editing control to the current cell value.
                base.InitializeEditingControl(rowIndex, initialFormattedValue,
                    dataGridViewCellStyle);
                CalendarEditingControl ctl =
                    DataGridView.EditingControl as CalendarEditingControl;

                // For Min And Max DATE
                ctl.MinDate = MinDate;
                ctl.MaxDate = MaxDate;

                // Use the default row value when Value property is null.
                if (this.Value == null)
                {
                    ctl.Value = (DateTime)this.DefaultNewRowValue;
                }
                else
                {
                    ctl.Value = (DateTime)this.Value;
                }
            }

Мой код, ..

Но я не получаю права на MinDate и MaxDate.В чем моя ошибка ...

Ответы [ 2 ]

1 голос
/ 19 декабря 2011

Добавление новых свойств в класс CalendarColumn:

public DateTime MinDate { get; set; }
public DateTime MaxDate { get; set; }

И в элементе управления InitializeEditingControl добавьте следующий код:

ctl.MinDate = this.MinDate;
ctl.MaxDate = this.MaxDate;

Затем вы можете установить эти свойства в столбце, и они будут отражены в DateTimePicker с (обратите внимание, что это будет учитываться только для новых ячеек)

1 голос
/ 19 декабря 2011

Вы можете добавить его в конструктор CalendarEditingControl, если хотите применить это для всех ячеек:

public CalendarEditingControl()
{
    this.MinDate = DateTime.Today;
    this.MaxDate = DateTime.Today.AddYears(1);
    this.Format = DateTimePickerFormat.Short;
}

Вы также можете предоставить некоторые свойства конструктора, чтобы сделать его более универсальным, если вам нужно, ноэто может быть достаточно для вашего использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...