Как использовать функцию из одной формы в другой форме? - PullRequest
0 голосов
/ 31 марта 2020

У меня есть несколько форм, но, в частности, я пытаюсь заставить форму1 делать что-то, когда таймер в форме5 тикает. Когда таймер тикает, он должен использовать функцию SimulAuto в form1, чтобы изменить его. Я начинаю с использования метода click для запуска form5. Я пробовал несколько вещей, но это просто не работает. Или кто-нибудь может мне помочь, предложив альтернативный подход к решению этой проблемы. Спасибо!

Вот мой код:

 public partial class FormPrincipal : Form
{
    Point[] initialPos = new Point[100];
    ListaVuelos lv = new ListaVuelos();//Declarar una lista de vuelos nueva.
    Sector s = new Sector();
    int MAX;
    Form5 f5 = new Form5();
    PictureBox[] aviones_vector = new PictureBox[100];//preguntar porque no me deja poner el integer MAX como referencia
    public FormPrincipal()
    {
        InitializeComponent();
    }

  ...

    public void SimulAuto()
    {
        int minutos = f5.SetMinutos();
        lv.Avanzar(minutos);
        ActualizarPosicion();
    }
    private void automáticaToolStripMenuItem_Click(object sender, EventArgs e)
    {
        f5.ShowDialog();
    }
}


public partial class Form5 : Form
{
    int cuenta;
    int tiempociclo;
    int tiempototal;

    public event Action SimulAuto;
    public Form5()
    {
        InitializeComponent();
    }
    public int SetMinutos()
    {
        return this.tiempociclo;
    }

    private void Form5_Load(object sender, EventArgs e)
    {
        MessageBox.Show("Cada ciclo dura 5 segundos.");
        timer1.Interval = 5000;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        timer1.Start();
        tiempociclo = Convert.ToInt32(duracionCicloTxt.Text);
        tiempototal = Convert.ToInt32(tiempoSimularTxt.Text);
        cuenta = 0;

    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        while ((cuenta*tiempociclo)<tiempototal)
        {
            cuenta++;
            tiempoTranscurridoLbl.Text = "Tiempo transcurrido: " + Convert.ToString(((cuenta + cuenta) * tiempociclo)) + "minutos.";
        }
        MessageBox.Show("Simulación completada.");
    }

    private void button2_Click(object sender, EventArgs e)
    {
        timer1.Stop();
    }

    private void button3_Click(object sender, EventArgs e)
    {
        timer1.Start(); 
    }
    private void Form5_FormClosing(object sender, FormClosingEventArgs e)
    {
        cuenta = 0;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...