這是我爲您帶來的真正挑戰。如果可以的話,解決它。自定義DGV上的不可能任務將焦點設置爲下一步按下輸入按鍵控制
輸入密鑰在Datagridview它是好主意嗎?或者是否有可能讓這裏的任何機構按照以下條件進行工作?
如果不是Datagridview Control在輸入按鍵上沒用。
我有以下的自定義DGV:
public class MyDataGridView : DataGridView
{
protected override bool ProcessDialogKey(Keys keyData)
{
Keys key = (keyData & Keys.KeyCode);
if (key == Keys.Enter)
{
Tab(keyData);
return true;
}
return base.ProcessDialogKey(keyData);
}
protected override bool ProcessDataGridViewKey(KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
Tab(e.KeyData);
return true;
}
return base.ProcessDataGridViewKey(e);
}
private void Tab(Keys KeyData)
{
Point cca = CurrentCellAddress;
bool Forward = ((KeyData & Keys.Shift) != Keys.Shift);
if (Forward)
if (cca.Y == Rows.Count - 1) // last row?
if (cca.X == Columns.Count - 1) // last column?
ToNextControl(Forward);
else
ProcessTabKey(KeyData);
else
ProcessTabKey(KeyData);
else
if (cca.Y == 0) // first row?
if (cca.X == 0) // first column?
ToNextControl(Forward);
else
ProcessTabKey(KeyData);
else
ProcessTabKey(KeyData);
}
/// <summary>
/// Go to the next control, forward or backword. This does not support
/// wrapping from the first to the last or the last to the first.
/// </summary>
/// <param name="Forward">Whether to go forward</param>
private void ToNextControl(bool Forward)
{
Control c = Parent.GetNextControl(this, Forward);
while (c != null && !c.TabStop) // get next control that is a tabstop
c = Parent.GetNextControl(c, Forward);
if (c != null)
c.Select();
}
}
同樣的工作以及對正常它允許專注於下一個控件在輸入按鍵,但是如果設置AllowUserToAddRows =在數據綁定模式假它不能正常工作。編輯最後一列的單元格值時會出現確切的問題,並按Enter鍵不允許將焦點設置爲下一個控件。
如何克服這一點?如何解決這個問題?
是真,這是我的作品。但是,你能告訴我爲什麼它不適用於我的情況嗎? – mahesh
...我的意思是根據我的舊代碼爲什麼它不起作用?爲什麼需要武力來關注。 – mahesh
在這裏找到答案:http://stackoverflow.com/questions/802722/whats-the-difference-between-control-select-and-control-focus – Moop