У меня есть несколько разных форм.Пользователь, который запускает программу с определенной привилегией, которую я извлекаю из базы данных, просто открывает конкретную форму, соответствующую этому разрешению, не получая никаких опций.
Применяется к заставке при запуске, которая выглядит ниже вprogram.cs:
static SplashScreen mySplashForm;
static Mainview myMainForm;
mySplashForm = new SplashScreen();
if (mySplashForm != null)
{
Thread splashThread = new Thread(new ThreadStart(
() => { Application.Run(mySplashForm); }));
splashThread.SetApartmentState(ApartmentState.STA);
splashThread.Start();
}
//Create and Show Main Form
myMainForm = new Mainview();
myMainForm.LoadCompleted += MainForm_LoadCompleted;
Application.Run(myMainForm);
if (!(mySplashForm == null || mySplashForm.Disposing || mySplashForm.IsDisposed))
mySplashForm.Invoke(new Action(() => {
mySplashForm.TopMost = true;
mySplashForm.Activate();
mySplashForm.TopMost = false;
}));
}
private static void MainForm_LoadCompleted(object sender, EventArgs e)
{
if (mySplashForm == null || mySplashForm.Disposing || mySplashForm.IsDisposed)
return;
mySplashForm.Invoke(new Action(() => { mySplashForm.Close(); }));
mySplashForm.Dispose();
mySplashForm = null;
myMainForm.TopMost = true;
myMainForm.Activate();
myMainForm.TopMost = false;
}
У меня нет вида для входа в систему, и он идентифицирует пользователя только по имени для входа в систему на компьютере с помощью следующего кода:
public static string username = System.Environment.UserName;
bool has = agents.Any<AgentItem>(uID => uID.UserId == username && uID.SmeCord == "y");
if (has == true)
Есть ли хороший способполучить более динамичный способ открывать формы с самого начала.Поэтому мне не нужно использовать «статический Mainview myMainForm;»или необходимо открыть форму, а затем «this.hide ();»?
Попытка связать новую форму, когда bool имеет значение true для myMainForm, чтобы она загружала правильную форму.Без какого-либо успеха.Последние попытки: я сделал следующее и все еще без прогресса.
bool has = agents.Any<AgentItem>(uID => uID.UserId == username && uID.SmeCord == "y");
if (has == true)
{
Mainview myMainForm;
mySplashForm = new SplashScreen();
if (mySplashForm != null)
{
Thread splashThread = new Thread(new ThreadStart(
() => { Application.Run(mySplashForm); }));
splashThread.SetApartmentState(ApartmentState.STA);
splashThread.Start();
}
//Create and Show Main Form
myMainForm = new Mainview();
myMainForm.LoadCompleted += MainForm_LoadCompleted;
Application.Run(myMainForm);
if (!(mySplashForm == null || mySplashForm.Disposing || mySplashForm.IsDisposed))
mySplashForm.Invoke(new Action(() => {
mySplashForm.TopMost = true;
mySplashForm.Activate();
mySplashForm.TopMost = false;
}));
}
Но тогда я все равно не смогу его запустить, так как функция MainForm_LoadCompleted ().
На данный момент у меня естьчетыре разные формы, которые я хочу открыть в зависимости от имеющихся у вас привилегий.
Некоторое время искали, но не смогли найти то, что может мне помочь.
Как мне решитьэто правильно?