小编Nit*_*ost的帖子

重写ProcessCmdKey时如何检测shift + tab

所以我不得不重写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)

.net c# overriding keypress winforms

3
推荐指数
1
解决办法
3782
查看次数

比较两个词典并返回另一个词典中的差异

我有两个字典,我希望比较两个字典键/对值.当我比较它们时,如果第二个字典中的值不同,我想保持它们的配对并将其存储到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个字典之后,我将更新表格中的一些信息,然后刷新我正在显示的列表,但这部分更容易,然后找出我需要的这部分方法和算法.任何帮助都一如既往地非常感激.谢谢你们.

c# dictionary .net-4.0 data-structures

1
推荐指数
1
解决办法
2379
查看次数