2016-11-04 1 views
0

Infragistics Windows 편집 가능한 그리드 및 winforms 버튼이 포함 된 화면이 있습니다. Enter 키에서 새 행이 울트라 그리드 눈금에 추가됩니다. 대신 나는 winforms 버튼 이벤트를 해고해야합니다.Infragistics 편집 가능한 Wingrid에 키 입력

탭에서만 다음 셀로 이동해야하며 마지막 셀에 도달하면 다음 행으로 이동해야합니다.

답변

2

UltraGrid의 BeforeRowUpdate 이벤트를 처리하고 새 행 템플리트가 커밋되기 전에 UltraButton의 수행 수행을 호출 할 수 있습니다.

public partial class Form1 : Form 
{ 
    private bool _IsEnterKeyDown = false; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     ultraGrid1.KeyDown += new KeyEventHandler(ultraGrid1_KeyDown); 
     ultraGrid1.BeforeRowUpdate += new CancelableRowEventHandler(ultraGrid1_BeforeRowUpdate); 
     ultraGrid1.InitializeLayout += new Infragistics.Win.UltraWinGrid.InitializeLayoutEventHandler(ultraGrid1_InitializeLayout); 
     ultraGrid1.DataSource = GetDataTable(); 
    } 

    private void ultraGrid1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyData == Keys.Enter) 
     { 
      _IsEnterKeyDown = true; 
     } 
    } 

    private void ultraGrid1_BeforeRowUpdate(object sender, CancelableRowEventArgs e) 
    { 
     if (e.Row.IsAddRow && _IsEnterKeyDown) 
     { 
      _IsEnterKeyDown = false; 
      ultraButton1.PerformClick(); 
     } 
    } 

    private void ultraButton1_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show("Button click event raised!"); 
    } 

    private void ultraGrid1_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e) 
    { 
     e.Layout.Override.AllowAddNew = AllowAddNew.TemplateOnBottom; 
    } 

    private DataTable GetDataTable(int rows = 10) 
    { 
     DataTable table = new DataTable("Table1"); 

     table.Columns.Add("Boolean column", typeof(bool)); 
     table.Columns.Add("Integer column", typeof(int)); 
     table.Columns.Add("DateTime column", typeof(DateTime)); 
     table.Columns.Add("String column", typeof(string)); 

     for (int i = 0; i < rows; i++) 
     { 
      DataRow row = table.NewRow(); 
      row["Boolean column"] = i % 2 == 0 ? true : false; 
      row["Integer column"] = i; 
      row["String column"] = "text"; 
      row["DateTime column"] = DateTime.Today.AddDays(i); 
      table.Rows.Add(row); 
     } 

     return table; 
    } 
} 
관련 문제