UserControl没有显示

时间:2012-11-20 13:10:04

标签: c#-4.0 inheritance

我正在开发一种屏幕管理器,这是代码:

/// <summary>
/// Change the screen according to type
/// </summary>
/// <author>Kay van Bree</author>
/// <param name="type">Replacement screen type</param>
public void ChangeScreen(ScreenType type)
{
    // Swap old screen with loading screen
    ReplaceScreen(screen, new LoadingScreen(this));
    UserControl newScreen;

    // Get instance of correct screen
    switch(type)
    {
        case ScreenType.login:
            newScreen = new LoginScreen(this);
            break;
        case ScreenType.dashboard:
            newScreen = new DashboardScreen(this);
            break;
        default: 
            newScreen = new LoginScreen(this);
            break;
    }

    // Swap loading screen with new screen
    ReplaceScreen(screen, newScreen);
    Text = "Attendance Tracker | " + screen;
}

private void ReplaceScreen(UserControl oldScreen, UserControl newScreen)
{
    Controls.Remove(oldScreen);
    screen = newScreen;

    // Initialize screen
    newScreen.BackColor = Color.Transparent;
    newScreen.Location = new Point((Size.Width - screen.Size.Width) / 2, (Size.Height - screen.Size.Height) / 2);

    Controls.Add(newScreen);
}

此功能的目标是在初始化另一个UserControl时显示加载屏幕(屏幕是UserControl的子类)。初始化UserControl时,它将删除“加载”屏幕并将UserControl添加到控件。

问题是我的加载屏幕(也是UserControl)不会显示。在初始化其他UserControl之前,它不会执行任何代码。

我似乎无法找到解决方案,或根本没有问题。你能解释一下这种行为吗?我接近加载屏幕错了吗? C#是否在不同的线程或其他东西中加载构造函数?有什么问题?

[编辑]顺便说一下。加载屏幕只是我想要添加的内容。屏幕管理器的其余部分工作得很好,所以如果我接近错误,我可能会放弃整个加载的东西。

1 个答案:

答案 0 :(得分:0)

一个简单的Refresh()解决了我的问题。