创建一个加载表单并加载不同的表单

时间:2015-01-21 09:52:36

标签: c# winforms

我创建了一个加载表单,但我想访问加载表单并加载不同的表单。我知道有一种方法可以实现这一点,但我认为的方式是创建另一个加载表单并访问另一个加载表单以加载不同的表单,即使加载表单内容相同。

我怎样才能做到这一点?

以下是加载表格的代码:

public Loading()
    {
        InitializeComponent();

        this.timer1.Interval = SystemManager.RandomNumberGenerator(1000, 2000);

        this.timer1.Tick += new EventHandler(this.CheckTimer);
    }

    private void Loading_Load(object sender, EventArgs e)
    {
        this.timer1.Start();
    }

    private void CheckTimer(object sender, EventArgs e)
    {
        uint timeLeft = 1;

        timeLeft--;

        if (timeLeft == 0)
        {
            this.timer1.Stop();

            this.Hide();

            AgeConfirmation _ageConfirmation = new AgeConfirmation();

            _ageConfirmation.ShowDialog();

            this.Close();
        }
    }

上面的代码是一个加载表单,并在到达0时加载另一个表单。

我试过这样的话:

public class SystemManager
{
public static void LoadForm(Form _form = null, Form _loadForm = null)
{
   _form.Hide();

   _loadForm = new Form();

   _loadForm.ShowDialog();

   _form.Close();
}
}

并像这样访问:

SystemManager.LoadForm(this, AgeConfirmation);

但它会引发以下错误:

'System.Windows.Forms.AgeConfirmation' is a 'type' but is used like a 'variable'

我的问题是:只创建一个表单(正在加载表单),然后访问“正在加载表单”,当时间达到0时,它将访问不同的表单。

你的回答非常感谢!

非常感谢!

3 个答案:

答案 0 :(得分:0)

您应该使用_ageConfirmation,这是表单对象,而不是表单类型AgeConfirmation

即。 SystemManager.LoadForm(this, _ageConfirmation);

答案 1 :(得分:0)

自己解决了!我创建了一个getter和setter int值,并使用switch case,代码将是这样的:

public class UserInformation
{
    public static int Value
    {
        get;
        set;
    }
}

public partial class Loading : Form
{
    public Loading()
    {
        InitializeComponent();

        this.timer1.Interval = SystemManager.RandomNumberGenerator(1000, 2000);

        this.timer1.Tick += new EventHandler(this.CheckTimer);
    }

    private void Loading_Load(object sender, EventArgs e)
    {
        this.timer1.Start();
    }

    private void CheckTimer(object sender, EventArgs e)
    {
        uint timeLeft = 1;

        timeLeft--;

        if (timeLeft == 0)
        {
            this.timer1.Stop();

            this.Hide();

            switch (UserInformation.Value)
            {
                case 0:
                AgeConfirmation _ageConfirmation = new AgeConfirmation();

                _ageConfirmation.ShowDialog();
                break;

                case 1:
                MainForm _mainForm = new MainForm();

                _mainForm.ShowDialog();
                break;

                case 2:
                Event _event = new Event();

                _event.ShowDialog();
                break;
            }

            this.Close();
        }
    }
}

private void AgeConfirmation_Load(object sender, EventArgs e)
    {
        UserInformation.Value = 1;
    }

private void button1_Click(object sender, EventArgs e)
    {
        this.Hide();

        Loading _loading = new Loading();

        _loading.ShowDialog();

        this.Close();
    }

private void MainForm_Load(object sender, EventArgs e)
    {
        UserInformation.Value = 2;
    }

private void button1_Click(object sender, EventArgs e)
    {
        this.Hide();

        Loading _loading = new Loading();

        _loading.ShowDialog();

        this.Close();
    }

当程序运行时,UserInformation.Value将为0

非常感谢那些回答我问题的人。

答案 2 :(得分:-1)

更改

_ageConfirmation.ShowDialog();

_ageConfirmation.Show();