Windows Phone -增加一个值

本文关键字:一个 Phone 增加 Windows | 更新日期: 2023-09-27 18:12:31

当我从另一个页面传递它时,我如何每秒增加一个值?

下面是一些代码,我从上一页获得值+我添加了计时器。

问题是,EventHandler必须为Tick创建,不能设置为OnNavigatedTo。

    public partial class Page1 : PhoneApplicationPage
    {
    DispatcherTimer timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(.1)   };

    public Page1()
    {
            InitializeComponent();
            this.timer.Tick += new EventHandler(OnNavigatedTo);
            this.Loaded += new RoutedEventHandler(OnNavigatedTo);

    }

    private void ButtonToPage1(object sender, RoutedEventArgs e)
    {
        App app = Application.Current as App;
        MessageBox.Show(app.storeValue);
    }
    private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    {

    }
    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        string QueryStr = "";
        NavigationContext.QueryString.TryGetValue("myNumber", out QueryStr);
        int test = (int.Parse(QueryStr));
    }

Windows Phone -增加一个值

try this:

DispatcherTimer tmr;
int test;
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    string QueryStr = "";
    NavigationContext.QueryString.TryGetValue("myNumber", out QueryStr);
    test = (int.Parse(QueryStr));
    LoadTimer();
}
public void LoadTimer()
{
    tmr = new DispatcherTimer();
    Deployment.Current.Dispatcher.BeginInvoke(() =>
    {
        tmr.Interval = new TimeSpan(0, 0, 1);
        tmr.Tick += tmr_Tick;
        tmr.Start();
    });
}
void tmr_Tick(object sender, EventArgs e)
{
    test++;
    TextBlock.Text = test.ToString();
}

我不清楚为什么你不能按照你评论中链接的教程去做。我猜你误解了它,并试图用OnNavigatedTo()方法处理Tick事件。是的,这不起作用,你不应该这样做。

你应该简单地附加事件处理程序方法在OnNavigatedTo:

private int myNumber;
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    string QueryStr = "";
    NavigationContext.QueryString.TryGetValue("myNumber", out QueryStr);
    myNumber = (int.Parse(QueryStr));
    DispatcherTimer newTimer = new DispatcherTimer();
    newTimer.Interval = TimeSpan.FromSeconds(1);
    //attach event handler method for Tick event
    newTimer.Tick += OnTimerTick;
    //or attach anonymous method so you don't need OnTimerTick() method :
    //newTimer.Tick += (o, e) => { myNumber++; };
    newTimer.Start();
}
void OnTimerTick(Object sender, EventArgs args)
{
    myNumber++;
}