公共静态变量

时间:2014-05-14 07:28:27

标签: c#

我在C#Windows窗体应用程序中使用公共静态变量。我有两个文件Audits.csFindings.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'。我不明白为什么?如果有人能帮助我,那就太好了。

2 个答案:

答案 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方法。

相关问题