
C# ログイン画面からメイン画面への画面遷移について
C#での画面遷移に関する質問です。
ログイン画面からメイン画面に遷移する場合、どの様な方法で遷移すれば良いのか
迷っています。
現状では以下の方法で遷移していますが、より適切な方法をご存じの場合
ご教示下さい。
(1)Program.csにおいてApplication.Run(new LoginDialog())で
ログイン画面を表示
(2)ログインボタンクリックメソッドでログイン成功時、
メイン画面インスタンスを生成・表示し、ログイン画面を非表示。
(後でログイン画面を再表示することがある為)
---------------------------------------------------------------------
private void LoginButton_Click(object sender, EventArgs e)
{
/* ログイン処理 */
//ログイン成功時
//メイン画面インスタンス生成
MainForm mainForm = new MainForm();
//ログイン画面インスタンスを代入
mainForm.loginForm = this;
//メイン画面表示
mainForm.Show();
//ログイン画面非表示
this.Visible = false;
}
---------------------------------------------------------------------
また上記の方法だとメイン画面を閉じても、アプリケーションは終了しない為
メイン画面の閉じるボタンを押した場合に以下の処理を行っています。
---------------------------------------------------------------------
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
//ログイン画面クローズ
loginForm.Close();
}
---------------------------------------------------------------------
以上、宜しくお願いします。
No.4
- 回答日時:
programクラスに LoginFormのインスタンスを生成しておいて
LoginFormの中のログイン実行ボタンのDialogResultプロパティをDialogResult.OKなどに設定
ログイン実行ボタンのクリックイベントで認証を失敗したっ場合に
this.DialogResult = DialogResult.Cancel;
を実行
としてやればいいように思いますが …
static class Program
{
public static LoginForm objLogin;
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
objLogin = new LoginForm();
if ( DialogResult.OK == objLogin.ShowDialog() )
{
Application.Run(new MainForm());
}
}
class LoginForm
{
private bool flgLogin = false;
void button1_Click(object sender, EventArgs e)
{
// ココに認証を実行するコードを記述
// flagLoginに結果を取得
if ( flgLogin == False )
{
this.DialogResult = DialogResult.Cancel;
}
}
}
MainFormからLogInFormを表示する場合
Program.objForm.ShowDialog();
を実行してやればいいでしょう
結果の取得などは適宜修正をしてください
といった具合で …
丁寧に実装方法を教えて頂き、有難うございます。
今回は最初に回答して頂いたtatsu99さんの回答をベストアンサーとさせて頂きましたが、非常に勉強になりました。

No.2
- 回答日時:
#1です。
>したがって最初にDB接続をする為のログイン画面を表示するのですが、DB接続先を
>変更したい場合にメイン画面のメニューからログイン画面を再表示する仕様を
>考えています。
なるほど、そういうことですか。
そのような場合、私なら以下のようにします。
1.メイン画面の表示開始時、
Form_menu_Shown(shownのイベントハンドラ)で、ログイン画面をモーダル表示する。
認証NGなら、メイン画面を閉じて終了
2.以降、メイン画面のみ表示し、メイン画面を閉じて終了。
ただし、接続先の切り替えの発生時は、ログイン画面をモーダル表示する。
認証OKなら、接続先を切り替える。NGなら今のまま続行。

No.1
- 回答日時:
>メイン画面インスタンスを生成・表示し、ログイン画面を非表示。
>(後でログイン画面を再表示することがある為)
後でログイン画面を再表示することがある為なら、今の方法でよいかと
思いますが、
後でログイン画面を再表示しなければいけない理由は何でしょうか?
通常の運用では、ログイン画面で認証がおわれば、その画面は必要ないはずです。
ですので、その理由に非常に興味があります。差し支えなければ、その理由を教えていただけませんでしょうか?
ちなみに、ログイン画面を再表示しないでよいなら、
mainForm.ShowDialog()でメイン画面をモーダル表示すればよいと思います。
この回答への補足
回答有難うございます!
ログイン画面と記載しましたが、正確にはDBログイン画面となります。
私が作成しようとしているのはDBのデータ作成を簡単に行うことが出来るアプリ
です。
したがって最初にDB接続をする為のログイン画面を表示するのですが、DB接続先を
変更したい場合にメイン画面のメニューからログイン画面を再表示する仕様を
考えています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
CloseとDisposeの違い
Visual Basic(VBA)
-
別のフォームで記述している関数を実行するには?C#
C言語・C++・C#
-
この行は既に別のテーブルに属しています
Visual Basic(VBA)
-
-
4
データバインドされたDatagridviewの列をコンボボックスにするには
Visual Basic(VBA)
-
5
DataGridViewの特定列に入力されている重複チェックをしたい
Visual Basic(VBA)
-
6
C# 別なフォームへ値を渡す (初心者です)
その他(プログラミング・Web制作)
-
7
フォーム上のすべてのTextBoxを空にしたい
Visual Basic(VBA)
-
8
C#プログラムで、ボタンをショートカットキー付きで作りたいのですが、方
その他(プログラミング・Web制作)
-
9
C#で角が丸いテキストボックス
その他(プログラミング・Web制作)
-
10
C#でのForm間のデータ受け渡し、保存について。
C言語・C++・C#
-
11
C# DataTableの行をソートしてDataGridViewに反映させたい
C言語・C++・C#
-
12
C# ListBoxのアイテムをユーザーが直接リネームできるようにすることは可能ですか?
C言語・C++・C#
-
13
C# DataTableに最後に追加した行をDataGridView上で選択状態にする方法は?
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Java-jspの画面入力値保持について
-
三菱GOTの画面切り替えについて
-
【JSP】input typeで入力された...
-
location.hrefでページ切替時の...
-
C言語で今まで表示していた画面...
-
javaのstrutsを使った画面遷移...
-
java初心者です。 画面Aで情報...
-
C# ログイン画面からメイン画面...
-
Strutsで画面遷移させない。
-
セッション切れでのリクエスト...
-
ブラウザアドレスバーからのURL...
-
ホームページビルダーが遅い!...
-
スマホ向けに「お気に入り登録...
-
ServletからServletへの値渡し
-
JAVAのセッション変数の上書き...
-
入力フォーム(JSP)にDB検索条...
-
XMLについての質問です。
-
JDBCにてデータをひく際のエラ...
-
このサービスの仕組みが知りた...
-
FormのsubmitでFormの内容がnull
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java-jspの画面入力値保持について
-
三菱GOTの画面切り替えについて
-
ServletからServletへの値渡し
-
セッション切れでのリクエスト...
-
C言語で今まで表示していた画面...
-
ServletからHTMLページへの遷移...
-
java初心者です。 画面Aで情報...
-
Javaプログラミングの質問にな...
-
登録後、呼び出し元ページに戻...
-
system("cls")について
-
【swing】ボタンクリックにより...
-
コンボボックスの値が画面移動...
-
遷移元を判定したい!
-
C# ログイン画面からメイン画面...
-
peek()の機能が使えれば・・・
-
ASP.NET 画面遷移前の状態を保...
-
Sessionがnullになりません。
-
ブラウザアドレスバーからのURL...
-
画面を隠す・消す方法を教えて...
-
検索画面→結果画面→検索画面と...
おすすめ情報