它正在工作,但是不正确 ...如果从上到下选择总和正确,但是从上到下选择总和不是
private void SalesGridView_SelectionChanged(object sender, EventArgs e)
{
float sumNumbers = 0;
for (int i = 0; i < SalesGridView.SelectedCells.Count; i++)
{
if (!SalesGridView.SelectedCells.Contains(SalesGridView.Rows[i].Cells["TotalBillColumn"]))
{
float nextNumber = 0;
if (float.TryParse(SalesGridView.SelectedCells[i].FormattedValue.ToString(), out nextNumber))
sumNumbers += nextNumber;
label1.Text = "selected value " + sumNumbers;
label2.Text = "nr selected cells " + SalesGridView.SelectedCells.Count.ToString();
}
else
{
}
}
}
答案 0 :(得分:0)
尝试以下代码:
private void SalesGridView_SelectionChanged(object sender, EventArgs e)
{
float sumNumbers = 0;
for (int i = 0; i < SalesGridView.SelectedCells.Count; i++)
{
var selectedCell = SalesGridView.SelectedCells[i];
if (selectedCell.ColumnIndex == SalesGridView.Columns["TotalBillColumn"].Index)
{
float nextNumber = 0;
if (float.TryParse(selectedCell.FormattedValue.ToString(), out nextNumber))
sumNumbers += nextNumber;
}
}
label1.Text = "selected value " + sumNumbers;
label2.Text = "nr selected cells " + SalesGridView.SelectedCells.Count.ToString();
}
对不起,对于较晚的解释,当我写该答案时没有时间详细说明您的实际问题是什么,只给了您应该可行的解决方案。
您的问题可以在那条线上
if (!SalesGridView.SelectedCells.Contains(SalesGridView.Rows[i].Cells["TotalBillColumn"]))
准确地说,以下陈述会给您带来错误的结果:
SalesGridView.Rows[i]
您将收到不想要的结果,因为i
不符合您对Rows
的索引的要求,因此,让我们看一下您在for
循环中写的内容。
for (int i = 0; i < SalesGridView.SelectedCells.Count; i++)
您的for
循环尝试枚举SelectedCells
中的SalesGridView
。
因此,假设您选择了5个单元格,而不是for循环,其枚举从0
到独占5
,所以我将是0, 1, 2, 3 or 4
。
现在,让我们再次检查一下我之前提到的有问题的陈述:
SalesGridView.Rows[i]
例如,SelectedCell
是否与i = 0
对应,而Rows[0]
是否对应。
您的SelectedCells
可以是任何行,并且您的for
循环将始终从0
枚举到SelectedCells.Count
,但是您对SalesGridView.Rows[i]
的声明将始终尝试得到具有给定索引Row
的{{1}}。
例如,
i
行和2
行中选择6
个单元格。7
将有SelectedCells.Count
2
,从SelectedCells
到独占0
,因此2
将是i
或0
1
来访问i
的行SalesGridView.Rows[i]
3.
中提到的i
或0
,但是我选择了1
行的2
单元,并且6
答案 1 :(得分:0)
export const spyOnFunction = <T>(obj: T, func: keyof T) => {
const spy = jasmine.createSpy(func as string);
spyOnProperty(obj, func, 'get').and.returnValue(spy);
return spy;
};
并使用TryParse(如果您要安全起见):
import * as mod from 'my/module';
//...
spyOnFunction(mod, 'myFunc').and.returnValue('myMockReturnValue');