[C#中的列表视图] [1]
如何在一行中使用值列中的更改值仅在C#中? [1]:https://i.stack.imgur.com/Wt2CM.png图片 或者如何在列值中获取特定单元格?
我想在列值中添加一行值更改? 当应用程序运行时,列表视图会逐行添加新行值,我想添加一行ID,名称,类型和值,以便稍后选择。
示例图片: 只有红色框中的值才会改变
[1]:https://i.stack.imgur.com/ofBE6.png [2]: https://i.stack.imgur.com/dismy.png [3]: https://i.stack.imgur.com/QH0Vj.png
代码
public partial class Form1 : Form
{
string r, rr, rrr;
private void timer2_Tick(object sender, EventArgs e)
{
ListViewItem lvi = new ListViewItem("1");
lvi.SubItems.Add(r);
lvi.SubItems.Add(rr);
lvi.SubItems.Add(rrr);
listView1.Items.Add(lvi);
}
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
Computer cp = new Computer();
cp.Open();
cp.GPUEnabled = true;
cp.CPUEnabled = true;
cp.RAMEnabled = true;
cp.MainboardEnabled = true;
foreach (var hardware in cp.Hardware) // get Hardware in pc
{
if (hardware.HardwareType == HardwareType.RAM)
{
hardware.Update();
foreach (var senR in hardware.Sensors) //<== all sensor in ram
{
if (senR.SensorType == SensorType.Load) // <== 1 sensor RAM usage
{
Console.WriteLine("RAM: " + Convert.ToInt32(senR.Value) + " %");
r = senR.Name.ToString(); // sensor name
rr = senR.SensorType.ToString(); // sensor type
rrr = senR.Value.ToString(); // sensor value
}
}
}
}
}}
我可以使用listview的替代方案吗?
答案 0 :(得分:0)
假设您的r是唯一值,您可以检查是否有匹配的记录:
private void timer2_Tick(object sender, EventArgs e)
{
bool exists = false;
foreach (ListViewItem lvi in listView1.Items)
{
if ( lvi.SubItems(1).Text == r )
{
exists = true;
lvi.SubItems(2).Text = rr;
lvi.SubItems(3).Text = rrr;
}
}
if (!exists )
{
ListViewItem lvi = new ListViewItem("1");
lvi.SubItems.Add(r);
lvi.SubItems.Add(rr);
lvi.SubItems.Add(rrr);
listView1.Items.Add(lvi);
}
}
这是可行的,但老实说,我认为你应该更新DataTable和DataGridView。 DataTable可以有一个唯一的列,您可以在源上进行检查查找,而不是在GUI上进行查找。