@Hixac

Почему DispatcherTimer не работает после повторного перехода в главное окно?

Основное окно с игрой:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;

namespace Кликер
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public int factor { get; set; } = 1;
        public int clicks { get; set; }
        public int autoclicktimer { get; set; }
        DispatcherTimer timer = new DispatcherTimer();
        public MainWindow()
        {
            
            InitializeComponent();
            label.Content = clicks;
            ClickerButton.Content = "+" + factor.ToString();
            
        }
        public MainWindow(int clicks, int factor, int autoclicktime)
        {
            InitializeComponent();
            label.Content = clicks;
            ClickerButton.Content = "+" + factor.ToString();
            this.clicks = clicks;
            this.factor = factor;
            this.autoclicktimer = autoclicktime;
            timer.Tick += new EventHandler(TimerAutoClicks);
            timer.Interval = new TimeSpan(0, 0, 0, 1, 0);
            if (autoclicktimer >= 1)
            {
                timer.Start();
            }
        }
        private void Button_Click(object sender, EventArgs e)
        {

            clicks = clicks + factor;
            label.Content = clicks;
        }
        private void ShopBt_Click(object sender, RoutedEventArgs e)
        {
            
            ShopWindow shopwin = new ShopWindow(clicks, factor);
            shopwin.Show();
            this.Close();
        }
        private void TimerAutoClicks(object sender, EventArgs e)
        {
            
            clicks += autoclicktimer;
            label.Content = clicks;
        }
    }
}

Окно с магазином:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Windows.Threading;

namespace Кликер
{
    /// <summary>
    /// Interaction logic for ShopWindow.xaml
    /// </summary>
    public partial class ShopWindow : Window
    {
        public int clicks { get; set; }
        public int factor { get; set; }
        public int autoclicktimer { get; set; } = 0;
        public ShopWindow(int clicks, int factor)
        {
            this.factor = factor;
            this.clicks = clicks;
            InitializeComponent();
            Moneys.Content = "Счёт: " + clicks.ToString();
            
        }
        private void Buy_Click(object sender, RoutedEventArgs e)
        {
            if (clicks >= 50)
            {
                clicks = clicks - 50;
                ++factor;
                Moneys.Content = "Счёт: " + clicks;
            }
            else
            {
                Checker.Content = "У ВАС НЕДОСТАТОЧНО СРЕДСТВ!";
            }
        }
        private void Back_Click(object sender, RoutedEventArgs e)
        {
            MainWindow mainWindow = new MainWindow(clicks, factor, autoclicktimer);
            mainWindow.label.Content = clicks;
            mainWindow.ClickerButton.Content = "+" + factor.ToString();
            mainWindow.Show();
            this.Close();
        }
        private void BuyAuto_Click(object sender, EventArgs e)
        {
            if (clicks >= 0)
            {
                clicks -= 200;
                ++autoclicktimer;
                Moneys.Content = "Счёт: " + clicks;
            }
            else
            {
                Checker.Content = "У ВАС НЕДОСТАТОЧНО СРЕДСТВ!";
            }
        }
    }
}

В xaml я почти ничего не делал, кроме обработчика событий кнопок click и их названий.
Если вам будет не сложно, дайте пару замечаний по поводу моего кода.
  • Вопрос задан
  • 28 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы