
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で質問しましょう!
似たような質問が見つかりました
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- その他(パソコン・周辺機器) ウインドウズ10のログオフ画面に現れる画像について教えて下さい ログオフをしてログイン待ちの画面にな 1 2023/05/19 21:37
- gooブログ ブログの記事を書きだしのみに表示したい 1 2022/06/25 19:11
- HTML・CSS htmlで画面遷移させたい 1 2022/10/28 18:19
- Windows 10 Windows 10でBIOS画面が表示されなくなった 9 2022/06/26 08:13
- その他(動画サービス) Tver アンケートに回答しても視聴できない(何度もアンケート画面が開く) 1 2023/01/13 21:47
- その他(スマートフォン・携帯電話・VR) スマホで簡単に楽天証券にログインする方法は? 5 2022/07/24 06:49
- CPU・メモリ・マザーボード マザボ ASRockのZ590 steel legand cpu i5-11500 メモリ DDR4 2 2022/10/10 05:01
- PHP 「ログイン機能を持たせる」説明が気難しいです。 2 2022/10/11 02:59
このQ&Aを見た人はこんなQ&Aも見ています
-
DataGridViewの特定列に入力されている重複チェックをしたい
Visual Basic(VBA)
-
Hideについて(.NET)
Visual Basic(VBA)
-
C# 別なフォームへ値を渡す (初心者です)
その他(プログラミング・Web制作)
-
-
4
データバインドされたDatagridviewの列をコンボボックスにするには
Visual Basic(VBA)
-
5
この行は既に別のテーブルに属しています
Visual Basic(VBA)
-
6
CloseとDisposeの違い
Visual Basic(VBA)
-
7
フォーム上のすべてのTextBoxを空にしたい
Visual Basic(VBA)
-
8
C#プログラムで、ボタンをショートカットキー付きで作りたいのですが、方
その他(プログラミング・Web制作)
-
9
C#で角が丸いテキストボックス
その他(プログラミング・Web制作)
-
10
【C#】Page_Loadさせない方法について
その他(プログラミング・Web制作)
-
11
C# ReadOnlyのTextBoxで
C言語・C++・C#
-
12
C# DataTableの行をソートしてDataGridViewに反映させたい
C言語・C++・C#
-
13
C# DataGridViewで複数選択したセルに同じ値を一括で入力するには
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フレームの副画面側のページを...
-
IEの開き方を通常に直すソース...
-
ダイアログ内での遷移方法
-
管理画面へのアクセス制限
-
ブラウザのタブを閉じるときに...
-
画面1の情報を画面2に表示させ...
-
EC-CUBEを旧バージョンにする方...
-
AjaxでJDBC利用
-
前画面の値を引き継ぎたい。
-
←戻る → を無効にする方法
-
windowsアプリケーションの画面...
-
タスクバーやタスクマネージャ...
-
fc2のブログで、見ている人のそ...
-
Processing初心者の学生です。 ...
-
画面遷移の際に確認ダイアログ...
-
サーブレットによるpostデータ...
-
Iphoneアプリ開発について
-
PCの画面上の任意の点から色を...
-
ボタンを押したあとに画像を表...
-
データ(表示)が切り替わって...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
三菱GOTの画面切り替えについて
-
C言語で今まで表示していた画面...
-
Java-jspの画面入力値保持について
-
登録後、呼び出し元ページに戻...
-
C# ログイン画面からメイン画面...
-
【C#】 FormClosingのイベント...
-
FormのsubmitでFormの内容がnull
-
location.hrefでページ切替時の...
-
ASP.NET 画面遷移前の状態を保...
-
Javaプログラミングの質問にな...
-
java初心者です。 画面Aで情報...
-
遷移元を判定したい!
-
セッション切れでのリクエスト...
-
画面を隠す・消す方法を教えて...
-
window.open()使用サブウィンド...
-
【JavaScriptわからない】1クリ...
-
MFCプログラミング
-
javaのstrutsを使った画面遷移...
-
子画面でもう一つ教えて下さい
-
CSVダウンロードでウィンド...
おすすめ情報