none
Проблема с методами. RRS feed

  • Вопрос

  • Следующий код не работает:

    Timer timer1;
    
            public Form1()
            {
                InitializeComponent();
    
                timer1 = new Timer();
                timer1.Enabled = true;
                timer1.Interval = 1;
                timer1.Tick += Method();
    
                Method();
            }
    
            private void Method(object sender, EventArgs e)
            {
    
            }

    Нужно чтобы срабатывала и строка:

                Method();

    И следующая строка тоже:

                timer1.Tick += Method();

    Бог движок на котором мы написаны, а Библия компилятор, и верующие постоянно компилируют себя в нём.

Ответы

  • Видимо вы скопировали что то не так. Вставьте вот это фрагмент целиком в замен вашего кода:

    Timer timer1;
    
    public Form1()
    {
        InitializeComponent();
        timer1 = new Timer();
        timer1.Enabled = true;
        timer1.Interval = 1;
        timer1.Tick += Method;
    
        Method(this, new EventArgs());
    }
    
    private void Method(object sender, EventArgs e)
    {
        if (this.Text == "Form1")
        {
            this.Text = "0";
        }
        this.Text = (int.Parse(this.Text) + 1).ToString();
    }

    После запуска вы должны увидеть, как в заголовке окна бегут циферки.
    • Помечено в качестве ответа Doctor Gordon 3 мая 2012 г. 16:24
    Отвечающий

Все ответы

  • Правильно подписывание и вызов метода должны выгялдеть вот так:

    timer1.Tick += Method;
    
    Method(this, new EventArgs());

    Если у вас не компилируется, то вы так и пишите: у меня не компилируется. Будет чуть легче вам помочь.
    Отвечающий
  • Если у вас не компилируется, то вы так и пишите: у меня не компилируется. Будет чуть легче вам помочь.

    Не компилируется, и чё делать дальше?

    Бог движок на котором мы написаны, а Библия компилятор, и верующие постоянно компилируют себя в нём.

  • Я вам показал, как изменить код, чтобы компилировалось и работало. Теперь у вас метод вызовется из конструктора, а потом каждую 1/1000 сыкунды будет вызываться если вы не отключите таймер.

    Отвечающий
  • Я вам показал, как изменить код, чтобы компилировалось и работало. Теперь у вас метод вызовется из конструктора, а потом каждую 1/1000 сыкунды будет вызываться если вы не отключите таймер.

    Ваш код у меня не скомпилировался. Я могу прикреплять его таймеру, и могу выполнят метод в отдельном блоке, но я не могу это делать одновременно, и прикреплять его таймеру, и выполнять в отдельном блоке. Мне нужно и то, и другое одновременно.

    Бог движок на котором мы написаны, а Библия компилятор, и верующие постоянно компилируют себя в нём.


  • Видимо вы скопировали что то не так. Вставьте вот это фрагмент целиком в замен вашего кода:

    Timer timer1;
    
    public Form1()
    {
        InitializeComponent();
        timer1 = new Timer();
        timer1.Enabled = true;
        timer1.Interval = 1;
        timer1.Tick += Method;
    
        Method(this, new EventArgs());
    }
    
    private void Method(object sender, EventArgs e)
    {
        if (this.Text == "Form1")
        {
            this.Text = "0";
        }
        this.Text = (int.Parse(this.Text) + 1).ToString();
    }

    После запуска вы должны увидеть, как в заголовке окна бегут циферки.
    • Помечено в качестве ответа Doctor Gordon 3 мая 2012 г. 16:24
    Отвечающий
  • Смотрите что принимает метод (какие аргументы) и передавайте их, без них (если нет аргументов по умолчанию, об этом вы узнаете позже) метод вызывать нельзя.

    Так же смотрите на ошибки компилятора, в большинстве случаев по ним понятно что вы делаете не так и как нужно исправить программу.


    Для связи [mail]