我在C#Windows窗体应用程序中使用公共静态变量。我有两个文件Audits.cs
和Findings.cs
。我在Audits.cs
文件中创建了一个公共静态变量F_Status,并在listView
中选择一个项目时将其赋值为'1'。我将在if语句的Findings.cs
文件中使用此变量。我在Findings.cs
文件中的编码如下。
if (Audits.F_Status==1)
{
// Do something
}
我做了一些断点并测试了编码。在Audits.cs
文件中,变量被赋值为'1',但是当它到达Findings.cs
文件中的if语句时,F_Status的值变为'0'。我不明白为什么?如果有人能帮助我,那就太好了。
答案 0 :(得分:0)
看起来值已设置在其他位置。要找出这种情况发生的位置,请将变量实现为属性并在其上设置断点。当然,不要使用自动属性,因为这不会达到断点
答案 1 :(得分:0)
我的猜测是你在事件ListView.ItemSelectionChanged的处理程序中设置F_Status = 1。当所选项目发生更改时,ListView会多次引发事件:可能最后一项表示先前所选项目的未选中。
MSDN的参考ListView.ItemSelectionChanged包括调试事件行为的示例代码。但是这个例子调用了MessageBox.Show,这对我来说是无法分析事件行为的目的 - 当它是一个窗口事件时。我会在文件的顶部添加:
using System.Diagnostics;
在事件处理程序中添加对Trace.WriteLine的适当调用,以查看IsSelected的值如何更改。
正如评论者所指出的,有更好的设计告诉表格B选择表格A的ListView上的项目。形式A中的公共静态变量是不合需要的,因为表单B可以更改值,这可能不是您想要的,并且经常导致灾难。 Web上有很多用于设计表单之间交互的示例 - 使用structured programming方法。