Как изменить тип возвращаемого DataGridViewCellCollection для соответствия Custom DatagridViewCell - PullRequest
0 голосов
/ 03 мая 2010

У меня проблема с моим настраиваемым DataGridViewCell, на самом деле я пытался записать в настраиваемое свойство моего datagridviewcell, но не могу, потому что он недоступен. Это мой код:

namespace MonthCalendarLibrary
{
    public class MonthCalendarCell : DataGridViewImageCell
    {

        public DateTime date { get; set; }

        public MonthCalendarCell() : base()
        {
            this.date = new DateTime();
            this.date = DateTime.Today;
        }


        public override void InitializeEditingControl(int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
        {
            base.InitializeEditingControl(rowIndex, initialFormattedValue,
                dataGridViewCellStyle);
            this.ReadOnly = false;

            MonthPanelEvent ctl = DataGridView.EditingControl as MonthPanelEvent;

        }

        public override Type EditType
        {
            get
            {
                // Return the type of the editing contol that CalendarCell uses.
                return typeof(MonthPanelEvent);
            }
        }

        public override Type ValueType
        {
            get
            {
                // Return the type of the value that CalendarCell contains.
                return typeof(Image);
            }
        }


        public override object DefaultNewRowValue
        {
            get
            {
                // Use the current date and time as the default value.
                return Image.FromFile("C:\\blank.jpg");
            }
        }

        protected override void OnMouseClick(DataGridViewCellMouseEventArgs e)
        {
            if (base.DataGridView != null)
            {
                Point point1 = base.DataGridView.CurrentCellAddress;
                if (((point1.X == e.ColumnIndex) && (point1.Y == e.RowIndex)) && (e.Button == MouseButtons.Left))
                {
                    if (base.DataGridView.EditMode != DataGridViewEditMode.EditProgrammatically)
                    {
                        base.DataGridView.BeginEdit(true);
                    }
                }
            }
        }

        public override object Clone()
        {
            MonthCalendarCell dataGridViewCell = base.Clone() as MonthCalendarCell;

            if (dataGridViewCell != null)
            {
                dataGridViewCell.date = this.date;
            }

            return dataGridViewCell;
        }

    }
}

И это мой код, когда я пытался получить доступ к этому свойству:

this.Rows[i].Cells[j].date = this.jourDuMois.ElementAt(i * 7 + j);

Мой вопрос - образец (я думаю), как я могу получить доступ к этому свойству?

Должен ли я изменить тип возвращаемых данных коллекцией данных? или есть другое решение.

Заранее спасибо.

С уважением,

P.S. : Извините за мой английский, я француз.

1 Ответ

1 голос
/ 03 мая 2010
MonthCalendarCell cell = this.Rows[i].Cells[j] as MonthCalendarCell;
if(cell != null)
{
   cell.date = this.jourDuMois.ElementAt(i * 7 + j);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...