所以我不得不重写ProcessCmdKey以便检测我的winform中的Tab键.有关上下文,请参阅此问题 既然我已经成功修复了Tabing问题,我现在意识到我还需要检查shift + tab逻辑以允许用户向后移动.我似乎无法弄明白.以下是我尝试过的一些内容,到目前为止还没有成功.
private bool isTab = false;
private bool isShiftTab = false;
private StringBuilder ShiftTab = new StringBuilder();
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Tab)
{
isTab = true;
ShiftTab.Append("Tab");
}
else
{
isTab = false;
}
if (keyData == Keys.Shift)
{
ShiftTab.Append("Shift");
}
if (ShiftTab.ToString() == "TabShift" || ShiftTab.ToString() == "ShiftTab")
{
isShiftTab = true;
}
if ((Control.ModifierKeys & Keys.Tab) != 0)
{
//code
}
return base.ProcessCmdKey(ref msg, keyData); …Run Code Online (Sandbox Code Playgroud) 我有两个字典,我希望比较两个字典键/对值.当我比较它们时,如果第二个字典中的值不同,我想保持它们的配对并将其存储到dictionary3中.
所以,如果我有(<1,T><2,T><3,T>)的字典1和()的2,<1,T><2,F><3,T>我希望3看起来像(<2,F>).
我不知道从哪里开始.我有正确的字典获取所有数据,但现在我不知道如何设置比较.
private Dictionary<int, bool> CompareDictionaries(Dictionary<int, bool> dic2)
{
Dictionary<int,bool> dictionary3 = new Dictionary<int,bool>();
foreach (KeyValuePair<int, bool> pair in dictionary1)
{
// keep KeyValuePair of dic2
// dictionary3.add(KeyValuePair of dic 2)
}
return dictionary3;
}
Run Code Online (Sandbox Code Playgroud)
任何有关这方面的帮助将不胜感激.我非常肯定我可以用词典来实现我的目标.在我获得第3个字典之后,我将更新表格中的一些信息,然后刷新我正在显示的列表,但这部分更容易,然后找出我需要的这部分方法和算法.任何帮助都一如既往地非常感激.谢谢你们.