C# 如何让箭头键在WinForms TableLayoutPanel中移动焦点?
默认情况下,向上和向左键转到上一个tabstop,向下/向右键转到下一个tabstop。我有一个桌面布局面板,每个面板上有一个按钮。有没有一种简单的方法可以让箭头键将单元格中的按钮聚焦到TableLayoutPanel中相应的方向,而不只是跟随tabstops键?是的,没问题。只需创建自己的TableLayoutPanel覆盖,并让它处理光标键即可获得所需内容。向项目中添加一个新类并粘贴如下所示的代码。编译。将工具箱顶部的新面板放到窗体上,替换旧面板C# 如何让箭头键在WinForms TableLayoutPanel中移动焦点?,c#,winforms,C#,Winforms,默认情况下,向上和向左键转到上一个tabstop,向下/向右键转到下一个tabstop。我有一个桌面布局面板,每个面板上有一个按钮。有没有一种简单的方法可以让箭头键将单元格中的按钮聚焦到TableLayoutPanel中相应的方向,而不只是跟随tabstops键?是的,没问题。只需创建自己的TableLayoutPanel覆盖,并让它处理光标键即可获得所需内容。向项目中添加一个新类并粘贴如下所示的代码。编译。将工具箱顶部的新面板放到窗体上,替换旧面板 using System; using Sy
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);
}
}
美好的很抱歉,我在(现在删除的)回答中没有意识到问题的本质。