GridView에서 마우스 우클릭 했을 때 달력이 출력되도록 할 수 있습니다.
출력된 달력에서 날짜 변경 시 그 행의 날짜 입력 값이 변경됩니다.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.gridView1.MouseDown += GridView1_MouseDown;
this.gridControl1.DataSource = CreateTable(5);
}
#region GridView1_MouseDown(sender, e)
/// <summary>
/// 마우스 클릭 했을 때 동작합니다.
/// </summary>
/// <param name="sender">이벤트 발생자 입니다.</param>
/// <param name="e">이벤트 인자 입니다.</param>
private void GridView1_MouseDown(object sender, MouseEventArgs e)
{
GridHitInfo hitInfo = gridView1.CalcHitInfo(e.Location);
ClearForm();
if(e.Button == MouseButtons.Right && (hitInfo.HitTest == GridHitTest.RowCell || hitInfo.HitTest == GridHitTest.Row))
{
DateEdit dateEdit = new DateEdit();
dateEdit.EditValue = this.gridView1.GetRowCellValue(hitInfo.RowHandle, gridView1.Columns["Date"]);
dateEditForm = new VistaPopupDateEditForm(dateEdit);
dateEditForm.Calendar.EditDateModified += new EventHandler(OnEditDateModified);
dateEditForm.ClosePopup();
dateEditForm.Tag = hitInfo.RowHandle;
dateEditForm.Location = PointToScreen(e.Location);
dateEditForm.Size = dateEditForm.CalcFormSize();
dateEditForm.ShowPopupForm();
}
}
#endregion
#region CreateTable(rowCount)
/// <summary>
/// 테이블을 생성합니다.
/// </summary>
/// <param name="rowCount">행 개수 입니다.</param>
/// <returns>테이블 입니다.</returns>
private DataTable CreateTable(int rowCount)
{
DataTable table = new DataTable();
table.Columns.Add("Name" , typeof(string));
table.Columns.Add("ID" , typeof(int));
table.Columns.Add("Number", typeof(int));
table.Columns.Add("Date" , typeof(DateTime));
for (int i = 0; i < rowCount; i++)
{
table.Rows.Add(new object[]
{
string.Format("Name{0}", i), i, 3-i, DateTime.Now.AddDays(i)
});
}
return table;
}
#endregion
VistaPopupDateEditForm dateEditForm;
#region ClearForm()
/// <summary>
/// 데이터를 초기화 합니다.
/// </summary>
private void ClearForm()
{
if(dateEditForm != null)
{
dateEditForm.Calendar.EditDateModified -= new EventHandler(OnEditDateModified);
dateEditForm.ClosePopup();
dateEditForm.Dispose();
}
}
#endregion
#region OnEditDateModified(sender, e)
/// <summary>
/// 날짜를 갱신합니다.
/// </summary>
/// <param name="sender">이벤트 발생자 입니다.</param>
/// <param name="e">이벤트 인자 입니다.</param>
private void OnEditDateModified(object sender, EventArgs e)
{
int rowHandle = Convert.ToInt32(dateEditForm.Tag);
gridView1.SetRowCellValue(rowHandle, gridView1.Columns["Date"], dateEditForm.Calendar.DateTime);
dateEditForm.HidePopupForm();
}
#endregion
}
728x90
'C# > DevExpress' 카테고리의 다른 글
DevExpress / Winform TextEdit Class TextEdit에 숫자 값에 서식 적용하기. (0) | 2019.04.17 |
---|---|
DevExpress / Winform TextEdit Class TextEdit에 날짜, 시간 값에 서식 적용하기. (0) | 2019.04.17 |
DevExpress / Winform CheckedListBoxItem 컨트롤 추가하기. (0) | 2019.04.15 |
DevExpress / Winform LookUpEdit 컨트롤에서 NULL 값에 텍스트 입력하기. (0) | 2019.04.15 |
DevExpress / Winform LookUpEdit 컨트롤 추가하기. (0) | 2019.04.15 |
댓글