更新 Timer for Windows 商店应用程序中的分钟数
Posted
技术标签:
【中文标题】更新 Timer for Windows 商店应用程序中的分钟数【英文标题】:Updating minutes in a Timer for Windows store app 【发布时间】:2015-06-19 08:03:55 【问题描述】:我正在尝试为我的 Windows 商店应用程序创建一个计时器, 我已经能够更新秒数,但不是分钟, 分钟从组合框中获取其值
我在这里做错了什么?
public sealed partial class MainPage : Page
int secCount = 0;
DispatcherTimer timerCount = new DispatcherTimer();
TextBlock time = new TextBlock();
int m;
public MainPage()
this.InitializeComponent();
timerCount.Interval = new TimeSpan(0, 0, 0, 1, 0);
timerCount.Tick += new EventHandler<object>(timer_tick);
m = Convert.ToInt32(cMinutes.SelectedValue);
private void timer_tick(object sender, object e)
time.Text = cHours.SelectedItem + ":" + m + ":" + secCount;
timer.Children.Add(time); //timer is the main grid
secCount--;
if(secCount < 0)
secCount = 59;
m--;
【问题讨论】:
【参考方案1】:首先,您的代码中存在问题,您将 TextBlock time
反复添加到 timer
Grid 中,并且您应该得到一个异常,抱怨 TextBlock 已经是 Grid 的孩子之一。
问题的答案
您需要更新 cMinutes 的 SelectedValue 或 SelectedIndex。
一些增强功能:
我将字段timerCount
和time
的初始化移动到MainPage 的构造函数中,在一个地方初始化所有字段是一个好习惯。
由于 int(secCount
和 m
)默认为 0,因此您无需为 int 设置初始值。
public sealed partial class MainPage : Page
int secCount;
int m;
DispatcherTimer timerCount; //declare here, initialize in constructor
TextBlock time; //declare here, initialize in constructor
public MainPage()
this.InitializeComponent();
time = new TextBlock();
timer.Children.Add(time); //fix: only add ONCE
//populate the Combobox
cMinutes.Items.Add(0);
cMinutes.Items.Add(1);
cMinutes.Items.Add(2);
cMinutes.SelectedIndex = 2;
m = Convert.ToInt32(cMinutes.SelectedValue);
timerCount = new DispatcherTimer();
timerCount.Interval = new TimeSpan(0, 0, 0, 1, 0);
timerCount.Tick += new EventHandler<object>(timer_tick);
timerCount.Start();
private void timer_tick(object sender, object e)
time.Text = cHours.SelectedItem + ":" + m + ":" + secCount;
secCount--;
if (secCount < 0)
secCount = 59;
m--;
if (cMinutes.Items.Contains(m)) //fix: update Combobox's selected value
cMinutes.SelectedValue = m;
【讨论】:
没有用,它总是从组合框中检索第三个项目,我也没有得到你添加的那些行 if (cMinutes.Items.Contains(m)) cMinutes.SelectedValue =米; 见评论//populate the Combobox
,我设置了3项,选择了第3项,以便编译代码并演示问题。 if (cMinutes.Items.Contains(m)) cMinutes.SelectedValue = m;
是我更新 Combobox 的地方,您正在寻找更新 Combobox 的方法,对吧?
我不,我只是想在从 cMinutes 组合框获取值后更新时间文本块中的分钟以上是关于更新 Timer for Windows 商店应用程序中的分钟数的主要内容,如果未能解决你的问题,请参考以下文章
创建/更新 Windows 手机商店应用程序会引发错误“您是不是缺少程序集参考”
win10应用商店打开Minecraft for Windows10时出现就出现无法加载页面,求大神指教。
Windows 11 新版 25163 推送!任务栏全新菜单应用商店更新文件资源管理器大量修复...
创建 Windows Store App Pie Timer 或 Ellipse 顺时针填充或 Circular Progress Bar
无法激活 Windows 应用商店应用程序(Visual Studio 2015、Windows 10 版本 1511)