我正在使用托管 VCL 在 Delphi 表单上托管我的 .net 用户控件。
但我有一个问题:tab 键、箭头键和特定键(HOME、INSERT)不起作用。

我尝试了在 Managed VCL 论坛上写的所有内容。
1)我试图将我的用户控件放到更高级别的用户控件并在那里覆盖 ProcessDialogKey 。但这没有帮助。
2)我尝试将 DLGC_WANTTAB 或 DLGC_WANTALLKEYS 添加到 TClrCustomControl.WMGetDlgCode 的消息结果中,但这也没有帮助我。

谁能帮我解决这个问题?

最佳答案

我有一个类似的问题。我通过拦截主机表单上的 tab 键并且不允许它处理击键来解决它。以下代码适用于我的情况:

procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY;
...
procedure TForm1.CMDialogKey(var Message: TCMDialogKey);
begin
  if Message.CharCode = VK_TAB then
    // ignore tabs and allow the TClrControl to handle them
  else
    inherited;
end;

就我而言,TClrControl 是客户端对齐的并覆盖整个表单,因此如果您混合 VCL 和 .NET 控件,这可能不太适合您的情况。

关于c# - 托管 VCL.Arrow 键和 Tab 键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10647733/

10-11 22:25