我有一个datagridview(两列)。第1列:名称,第2列:年龄
当我按下评估按钮时,我想在Columns Age后添加更多列名称Evaluate。
每行的内容都是Young(旧)。如果年龄<40岁则年轻,如果年龄> 40岁则年龄 我是怎么做到的?
我的代码:
OpenFileDialog opd = new OpenFileDialog();
private void btnOpenfile_Click(object sender, EventArgs e)
{
//Open txt file
opd.Filter = "TXT|*.txt";
//Choose File
if (opd.ShowDialog() == DialogResult.OK)
{
lblFilename.Text = opd.SafeFileName;
}
var dulieu = File.ReadAllLines(opd.FileName);
////////////////////
if (dulieu.Count() > 0)
{
foreach (var cellValues in dulieu.Skip(0))
{
var cellArray = cellValues
.Split(new[] {'\t'}, StringSplitOptions.RemoveEmptyEntries);
if (cellArray.Length == dtgBangketqua.Columns.Count)
dtgBangketqua.Rows.Add(cellArray);
}
}
}
答案 0 :(得分:0)
根据您的if (cellArray.Length == dtgBangketqua.Columns.Count)
我假设您还没有&#34; 评估&#34; DataGridView中的列。所以首先要做的就是添加一个。
然后遍历每一行并获得年龄值。 它最初是以字符串形式出现的,因此,您需要将其强制转换为int。 然后评估年龄,我假设你并不是要排除那些正好是40岁的人,所以我把它设置为Old。
以下是适合您需要的代码:
private void btnEvaluate_Click(object sender, EventArgs e)
{
dtgBangketqua.Columns.Add("Evaluate", "Evaluate");
foreach (DataGridViewRow ThisRow in dtgBangketqua.Rows)
{
string strAge = ThisRow.Cells[1].Value as string;
int Age = -1;
if( int.TryParse(strAge,out Age) == true )
{
ThisRow.Cells[2].Value = (Age < 40) ? "Young" : "Old";
}
}
}
如果答案适合您,请不要忘记将答案标记为已接受。