似乎默认是向上和向左键转到上一个制表位,而向下/向右键转到下一个制表位。我有一个每个带有一个按钮的TableLayoutPanel。是否有一种简单的方法可以使箭头键将单元格中的按钮聚焦到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);
}
}
关于c# - 如何让箭头键在WinForms TableLayoutPanel中移动焦点?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8762523/