C# 从xml时间创建计时器
我从XML中提取了一个时间,并将其放入listview中,但我希望它倒计时。在如何做到这一点上运气不佳 这是我获取时间的代码&一些图片C# 从xml时间创建计时器,c#,xml,winforms,C#,Xml,Winforms,我从XML中提取了一个时间,并将其放入listview中,但我希望它倒计时。在如何做到这一点上运气不佳 这是我获取时间的代码&一些图片 Private void ListViewTrainingQue() { listView1.View = View.Details; listView1.GridLines = true; listView1.FullRowSelect = true; string string2 =
Private void ListViewTrainingQue()
{
listView1.View = View.Details;
listView1.GridLines = true;
listView1.FullRowSelect = true;
string string2 = "https://api.eveonline.com/char/SkillQueue.xml.aspx?keyID=4602486&&vCODE=BHGVeXQkRLKLkIkZQHdeyUxmUz9EfUwbvGzoc2eO4ZR8kRMYxk8PbD4LMwLF7BvH";
// Add Columns to listview
listView1.Columns.Add("Name", 50);
listView1.Columns.Add("Level", 50);
listView1.Columns.Add("Remaing Time", 100);
listView1.Columns.Add("Bar", 100);
// string array1 = "2015-10-23 13:00";
// Create Array to return values to.
string[] arr = new string[3];
ListViewItem item;
XmlDocument XMLtrans = new XmlDocument();
XMLtrans.Load(string2);
XmlNodeList TRnodelist = XMLtrans.SelectNodes("/eveapi/result/rowset/row");
foreach (XmlNode xmlnode in TRnodelist)
{
string array1 = xmlnode.Attributes["endTime"].InnerText;
var date = DateTime.Parse(array1);
var Timespan = date - DateTime.Now;
if (xmlnode.Attributes["typeID"] != null)
arr[0] = xmlnode.Attributes["typeID"].InnerText;
if (xmlnode.Attributes["level"] != null)
arr[1] = xmlnode.Attributes["level"].InnerText;
if (xmlnode.Attributes["endTime"] != null)
arr[2] = string.Format("{0}h {1}m {2}s", Timespan.Hours, Timespan.Minutes, Timespan.Seconds);
item = new ListViewItem(arr);
listView1.Items.Add(item);
}
}
这是它的样子
创建
列表视图项目时
将提取的日期时间
设置为项目的标记
:
item = new ListViewItem(arr);
item.Tag= date;
然后在表单中添加计时器,将间隔设置为1000
,并将其启用
设置为真
并处理勾选
事件:
private void timer1_Tick(object sender, EventArgs e)
{
foreach (ListViewItem item in listView1.Items)
{
var timeSpan = ((DateTime)item.Tag) - DateTime.Now;
item.SubItems[2].Text = string.Format("{0}h {1}m {2}s",
timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds);
}
}
投票结束。寻求调试帮助的问题(“此代码为什么不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题说明的问题对其他读者没有用。请参阅:如何创建最小、完整且可验证的示例你想让我添加一个失败尝试的例子?我能做到,谢谢!只是仍然没有工作得到一个错误;{“对象引用未设置为对象的实例。”}这是主要思想,您将以这种方式解决此问题。这意味着您忘记在ListViewTrainingQue
中设置标记。您应该在创建itemitem.Tag=date的循环中设置标记
代码>您好,您应该了解要点,然后您应该学习如何使用计时器
,然后您应该学习如何使用列表视图
。其主要思想是:设置一个计时器,将其设置为每1000毫秒引发事件,并将逻辑放入事件处理程序中。关于计时器
:使用Interval
属性设置引发勾选
事件的间隔。您还可以在需要时Stop()
或Start()
启动它。关于ListView
:您可以使用items
属性查找项目,例如listView1。项目[0]
是第一个项目。查找项目计数listView
.items.count`获取项目的子项目:listView1.items[0]。子项目[0]
,删除位置listView1.items.RemoveAt(0)
或删除特定项目listView1.items.remove(项目)