私のクライアントは、DataGridViewセルを介してタブするときに、現在の次のセルがデフォルト以外のセルになるようにしたいと考えています。これを達成する最良の方法は何ですか?DataGridViewでタブの順序を変更するにはどうすればよいですか?
2
A
答えて
2
独自のDataGridViewを作成し、ProcessTabKeyメソッドをオーバーライドします。そこにロジックがありますか?SetCurrentCellAddressCoreを使用して、次のアクティブなセルを設定します。
など、そのメソッドのデフォルトの実装では、このような選択モード、編集モード、行の状態など、さまざまな条件を占めていることを注意、境界
編集
また、あなたは/ keyUpイベントを処理することができKeyDownイベント。 Trueに、グリッドの
設定StandardTabプロパティを、次のコードを追加します:、そこでのいくつかの奇妙な行動があると私は多くの時間を費やすことはありませんでしたが、これはやるべき
private void Form1_Load(object sender, EventArgs e)
{
// TODO: Load Data
dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[0];
if (dataGridView1.CurrentCell.ReadOnly)
dataGridView1.CurrentCell = GetNextCell(dataGridView1.CurrentCell);
}
private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab)
{
dataGridView1.CurrentCell = GetNextCell(dataGridView1.CurrentCell);
e.Handled = true;
}
}
private DataGridViewCell GetNextCell(DataGridViewCell currentCell)
{
int i = 0;
DataGridViewCell nextCell = currentCell;
do
{
int nextCellIndex = (nextCell.ColumnIndex + 1) % dataGridView1.ColumnCount;
int nextRowIndex = nextCellIndex == 0 ? (nextCell.RowIndex + 1) % dataGridView1.RowCount : nextCell.RowIndex;
nextCell = dataGridView1.Rows[nextRowIndex].Cells[nextCellIndex];
i++;
} while (i < dataGridView1.RowCount * dataGridView1.ColumnCount && nextCell.ReadOnly);
return nextCell;
}
0
氏ルスランをコードは私のために働かなかった。彼の考えを引き出すことで、私はコードを少し変えました。
private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab)
{
if(dataGridView1.CurrentCell.ReadOnly)
dataGridView1.CurrentCell = GetNextCell(dataGridView1.CurrentCell);
e.Handled = true;
}
}
private DataGridViewCell GetNextCell(DataGridViewCell currentCell)
{
int i = 0;
DataGridViewCell nextCell = currentCell;
do
{
int nextCellIndex = (nextCell.ColumnIndex + 1) % dataGridView1.ColumnCount;
int nextRowIndex = nextCellIndex == 0 ? (nextCell.RowIndex + 1) % dataGridView1.RowCount : nextCell.RowIndex;
nextCell = dataGridView1.Rows[nextRowIndex].Cells[nextCellIndex];
i++;
} while (i < dataGridView1.RowCount * dataGridView1.ColumnCount && nextCell.ReadOnly);
return nextCell;
}
関連する問題
- 1. axaptaのコントロールのタブ順序を変更するにはどうすればいいですか?
- 2. WPFでGridView列の順序を動的に変更するにはどうすればよいですか?
- 3. Backbone.jsアプリケーションでlocalStorageのデータの順序を変更するにはどうすればよいですか?
- 4. kivyでBoxLayoutの順序を変更するにはどうすればよいですか?
- 5. Apache Tilesでタイル評価の順序を変更するにはどうすればよいですか?
- 6. 呼び出される順序を変更するにはどうすればよいですか?
- 7. コアデータの複合主キーのフィールドの順序を変更するにはどうすればよいですか?
- 8. Androidでタブを変更するにはどうすればよいですか?
- 9. XPのクイック起動ボタンの順序を変更するにはどうすればよいですか?
- 10. ベクトルの要素の順序を変更するにはどうすればよいですか?
- 11. Eloquentコレクションの結果の順序を変更するにはどうすればよいですか?
- 12. Hudsonダッシュボードのジョブの順序を変更するにはどうすればよいですか?
- 13. ggplot2バーグラフのバーの順序を変更するにはどうすればよいですか?
- 14. Rails 3のイニシャライザのロード順序を変更するにはどうすればよいですか?
- 15. テーブルC#の<tr>タグの順序を変更するにはどうすればよいですか?
- 16. XCode xibのスタッキング順序やオブジェクトを変更するにはどうすればよいですか?
- 17. HTMLタグの順序を変更するにはどうすればよいですか?
- 18. data.table列の順序を変更するにはどうすればよいですか?
- 19. テンプレートインスタンス化の順序を変更するにはどうすればよいですか?
- 20. AngularJS - divの順序を変更するにはどうすればいいですか?
- 21. デフォルトのソート順を降順に変更するにはどうすればよいですか?
- 22. Android:TabWidgetのタブ順序/位置を変更
- 23. 条件ごとにDataGridviewの列の色を変更するにはどうすればよいですか?
- 24. RabbitMQでのメッセージの順序をランダム化するにはどうすればよいですか?
- 25. アップロードしたファイルを正しい順序で処理するにはどうすればよいですか?
- 26. グラフAPI:正しい順序でアルバムを取得するにはどうすればよいですか?
- 27. Android - タブでテキストと画像のデフォルト位置を変更するにはどうすればよいですか?
- 28. Nightwatchテストを特定の順序で実行するにはどうすればよいですか?
- 29. Visual Studio 9で現在選択されているサブフォーム内でタブ順序を保持するにはどうすればよいですか?
- 30. フォームの入力タブ順序を変更する方法
独自のグリッドを書きたくない場合は、KeyUp/KeyDownイベントを使用します。私の答えを見てください。私はそれを試して、それは動作するようだ... – Ruslan