防止更改列表框选择

时间:2019-01-30 13:28:12

标签: c# wpf

我对C#和编码一般还是很陌生。我对我的小项目有疑问。我有多个连接到SQL数据库的列表框。在列表框下,我有文本框可将新值输入数据库。

我遇到的问题是,每当我在文本框中输入某些内容时(我做到了,因此按Enter都会运行Keydown事件以添加行),列表框中的选择会更改。这很烦人,因为自从我加入多个数据库以来,我选择的内容很重要,而选择内容决定了输入的去向。

所以我的问题是,在WPF或C#中是否有办法防止未选中的项目被选中?我已经搜索了一段时间,但是除了我所掌握的知识很少我无法理解的解释之外,什么也找不到。

编辑

感谢您的答复。我查看了人们发布的链接,但无法弄清楚它们如何适用于我的确切问题。 我一直试图将SelectedIndex保存在一个变量中,然后再将SelectedIndex设置回该变量,但是我一定在某个地方犯了错误。

OUTPUT 
    INSERTED.ItemCode, INSERTED.VariantCode,  GETDATE(), $action
    INTO SyncLog;

2 个答案:

答案 0 :(得分:0)

在添加元素之前,将所选索引存储在变量中,并在添加项目后将所选索引设置回该变量

答案 1 :(得分:0)

因此,在看不到代码其余部分的情况下,我很难告诉您,但是您在y方法之外声明了TxbSchüler_KeyDown。由于这不在您的方法范围之内,因此这意味着您的类中的其他方法将有权访问此变量,并且能够在方法完成执行之前更新其值(这可能是您的问题)。

根据您的代码,很有可能y方法之外的地方正在更新TxbSchüler_KeyDown。我会查看您的ShowStudentShowClass方法,看看它们是否也在使用名为y的变量 OR ,如果这些方法正在更新{{1} },因为他们可能有权更新此值,因此有机会更新listClasses.SelectedIndex,因为yy紧密相关。

通常,优良作法是将这些变量保留在您的方法本地,以避免在方法范围之外对该变量进行任何不必要的更改。如果需要在另一个过程中使用此变量,只需将其作为参数传递给另一个方法或函数。

简而言之,如果将变量listClasses.SelectedIndex的声明移到方法中,则可以在代码中的其他地方更新y时(通过在{ {1}}或直接更改y)。如果不是,则可能是更复杂的控制问题。但是,我对此表示怀疑。

但是,事实上,您正在将所选索引重新分配为listClasses.SelectedIndex,只有在之后,您调用了两种可以访问更改的方法该变量在重新分配之前是一个很大的危险信号,使我认为这可能是与范围相关的问题,正在提供y的不必要的变量重新分配。

链接:Geeks For Geeks: C# Variable Scope

希望您的修复就这么简单。最好的祝愿。

P.S。 -还使用比y更好的名称,因为它会在代码的其他位置像拇指一样伸出来。 y含糊不清,不具描述性。将其命名为y