0
看起來,默認值是向上和向左鍵轉到先前的製表符,並且向下/向右鍵轉到下一個製表符。我有一個TableLayoutPanel,每個都有一個按鈕。是否有一種簡單的方法可以使箭頭鍵將單元格中的按鈕聚焦到TableLayoutPanel中相應的方向,而不是僅僅跟隨製表符?你如何讓方向鍵在WinForms TableLayoutPanel中移動焦點?
看起來,默認值是向上和向左鍵轉到先前的製表符,並且向下/向右鍵轉到下一個製表符。我有一個TableLayoutPanel,每個都有一個按鈕。是否有一種簡單的方法可以使箭頭鍵將單元格中的按鈕聚焦到TableLayoutPanel中相應的方向,而不是僅僅跟隨製表符?你如何讓方向鍵在WinForms TableLayoutPanel中移動焦點?
是的,沒問題。只需創建您自己的TableLayoutPanel覆蓋並讓它處理光標鍵以獲取所需內容。爲您的項目添加一個新類並粘貼下面顯示的代碼。編譯。將工具箱頂部的新面板放到表單上,替換舊的面板。
using System;
using System.Windows.Forms;
class MyLayoutPanel : TableLayoutPanel {
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
var ctl = this.FindForm().ActiveControl;
if (ctl.Parent == this) {
int col = this.GetColumn(ctl);
int row = this.GetRow(ctl);
if (keyData == Keys.Left && col > 0) {
var newctl = this.GetControlFromPosition(col - 1, row);
if (newctl != null) newctl.Focus();
return true;
}
// etc..
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
不錯。我很抱歉,我沒有意識到我的(現在刪除)答案中的問題的性質。 – 2012-01-06 20:00:20