これは私がここであなたにもたらす本当の挑戦です。できればそれを解決してください。カスタムDGVの不可能な作業Enterキーの次の制御にフォーカスを設定
Enter Key On Datagridview良いアイデアですか?または、ここにあるどんな体でも、次の条件でそれを動作させることは可能ですか?
Enterキーを押すと、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