计数器不能正常工作
本文关键字:工作 常工作 不能 计数器 | 更新日期: 2023-09-27 18:17:32
我有一些代码看起来像这样:
int i = 0;
foreach (var line in theCP4UnknownList.Distinct())
{
var splitUnknowns = line.Split(' ');
i++;
unknownCP4Counter = unknownCP4Counter - i;
KTS_Save saveForm = new KTS_Save (splitUnknowns[0], splitUnknowns[1], splitUnknowns[3], splitUnknowns[4], openDataBase2File.FileName, unknownCP4Counter);
saveForm.ShowDialog();
}
基本上,我想做的是显示有多少未知部分,并减少每个表单上的计数器。
因此,如果有10个部件,那么为用户弹出的第一个表单将在右上角有一个"10"。用户退出当前表单后,将弹出一个新表单,并在右上角显示"9"....这个过程会一直持续,直到它达到0。这也是表单停止出现的时候,因为unknownCP4Counter
被设置为theCP4UnknownList
中有多少项。
有谁知道我的代码有什么问题吗?它似乎在每个表单上都输出一个"0"。
编辑:
private string _Name;
private string _PtpName;
private string _TapeWidth;
private string _FeederPitch;
private string _DataBaseFileName;
private int _Counter;
public KTS_Save()
{
InitializeComponent();
}
public KTS_Save(string Name, string PtpName, string TapeWidth, string FeederPitch, string DBFileName, int Counter)
{
InitializeComponent();
_Name = Name;
_PtpName = PtpName;
_TapeWidth = TapeWidth;
_FeederPitch = FeederPitch;
_DataBaseFileName = DBFileName;
nameTextBox.Text = _Name;
ptpNameTextBox.Text = _PtpName;
tapeWidthTextBox.Text = _TapeWidth;
feederPitchTextBox.Text = _FeederPitch;
counterLabel.Text = _Counter.ToString();
}
int i = 0;
int unknownCP4Counter = theCP4UnknownList.Distinct().Count; // 10
foreach (var line in theCP4UnknownList.Distinct())
{
i++;
unknownCP4Counter = unknownCP4Counter - i;
}
你正在做:
unknownCP4Counter = 10;
// foreach starts
unknownCP4Counter = 9;
unknownCP4Counter = 7;
unknownCP4Counter = 4;
unknownCP4Counter = 0;
unknownCP4Counter = -5;
unknownCP4Counter = -11;
unknownCP4Counter = -18;
unknownCP4Counter = -26;
unknownCP4Counter = -35;
unknownCP4Counter = -45;
// foreach stops
如果你想创建一个递减计数器,我建议你这样做:
int unknownCP4Counter = theCP4UnknownList.Distinct().Count; // 10
foreach (var line in theCP4UnknownList.Distinct())
{
unknownCP4Counter--;
}
编辑基于OP的编辑:
您忘记用Counter
参数初始化构造函数KTS_Save
中的_Counter
字段。因为int不是一个可空的类型,它的默认值将是0
。
unknownCP4Counter初始化为什么?它每次都被i减去,如果它被初始化为总计数,那么i将始终是total - total为0。也许你想写:
unknownCP4Counter = i;
?