我正在尝试添加一个新的字典值并将一个新的用户控件添加到流布局。但是按下添加控制按钮会抛出一个带有内部异常的初始化程序异常,例如“Key has already been added”。我不知道完整的异常,因为我很难找到如何打开通常在 Visual Studio 中显示的弹出错误。已经设置了一个循环来检查键是否已经添加到字典中,如果是则更改键(如代码块所示)。还尝试清除流程布局控件列表。(没有更改错误)抛出错误的函数:/// <summary> /// Create a new key propertie set. /// </summary> /// <param name="sender"></param> /// <param name="e"></param>private void buttonAddKey_Click(object sender, EventArgs e){ // Create new UI key component in the flow layout. KeyPropertiesCtrl inputKeyCtrl = new KeyPropertiesCtrl(); flowLayoutKeys.Controls.Add(inputKeyCtrl); Console.WriteLine("inputKeyCtrl " + inputKeyCtrl.Name + " parent " + inputKeyCtrl.Parent.Name); // Create new data input key. CustomInputKey newKey = new CustomInputKey(); newKey.Activation.InputKey = new Interception(); Console.WriteLine("newKey " + newKey.Activation.InputKey); // Get a key binding from the user. try { Form1.Context = InterceptionDriver.CreateContext(); InterceptionDriver.SetFilter(Form1.Context, InterceptionDriver.IsKeyboard, (Int32)KeyboardFilterMode.All); InterceptionDriver.SetFilter(Form1.Context, InterceptionDriver.IsMouse, (Int32)MouseFilterMode.All); Form1.InterceptOnce(Form1.Context, out newKey.Activation.InputKey.DeviceId, out newKey.Activation.InputKey.TheStroke); }}所以我真正期望的是在按下按钮控件之后。它在流布局中创建一个新的用户控件,然后在它点击函数 InterceptOnce() 时冻结应用程序,因为它会在那里等待我按下输入以绑定该输入。最后存储新的键绑定并将字典保存到文件中。但它在 while(Form1.CurrentSelections...){} 行抛出异常“key has already been added”,在我添加 while 循环和 try{} 之前,在 Form1.Context = InterceptionDriver 上抛出了异常。创建上下文();这很奇怪,因为使用 try{}catch(Exception excp){} 它不会抛出异常。我认为异常与 new CustomInputKey(); 有关 并且不知道为什么......错误: 截图
1 回答
哈士奇WWW
TA贡献1799条经验 获得超6个赞
初始化程序错误信息也显示在 Class[Design] 中。当抛出异常时,使变量成为非静态变量将移动,这有助于我找到异常的原因。
事实证明,我在控制组件的初始化阶段为尚未创建的变量分配了一个值。
- 1 回答
- 0 关注
- 74 浏览
添加回答
举报
0/150
提交
取消