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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
C# TEXTが空白であるLABELは何処に???
C言語・C++・C#
-
C#にて別クラスの関数を使いたい
C言語・C++・C#
-
-
4
【C#】別フォームも同時に閉じるには?
C言語・C++・C#
-
5
web.configとは?(初心者です)
Microsoft ASP
-
6
「マスタ」と「テーブル」の違いとはなんでしょうか?
Oracle
-
7
C#で起動時のフォームを非表示にした後、Showで表示したいのですが
その他(プログラミング・Web制作)
-
8
visual studio でインデントを自動的に揃えるショートカットキー
その他(プログラミング・Web制作)
-
9
DataGridViewの特定列に入力されている重複チェックをしたい
Visual Basic(VBA)
-
10
データグリッドビューの一番最初の行に列を追加したい
Visual Basic(VBA)
-
11
フォームの再読み込み
Visual Basic(VBA)
-
12
C# ReadOnlyのTextBoxで
C言語・C++・C#
-
13
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
-
14
C# 超初心者です。 this.Refresh();という文を使いたいです
C言語・C++・C#
-
15
一定時間操作されないと自動で終了させる方法
Visual Basic(VBA)
-
16
外部参照してるキーを主キーにすることは可能?
その他(データベース)
-
17
.NET SqlDataReader のレコード有無判定
Visual Basic(VBA)
-
18
C# 計算処理中に実行中ウィンドウを表示させたい。
C言語・C++・C#
-
19
DataGridViewの内容をDBに反映する時
Visual Basic(VBA)
-
20
DataGridViewでセルクリックイベントを発生させるには
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
三菱GOTの画面切り替えについて
-
画面遷移を行わずに同一ページ...
-
画像の縦横比固定の計算方法。
-
フロントエンドフレームワーク...
-
ボタンを押したあとに画像を表...
-
JavaScriptでページが更新され...
-
FormのsubmitでFormの内容がnull
-
Java-jspの画面入力値保持について
-
子画面から孫画面をポップアッ...
-
VBS/HTA:画面のサイズを取得す...
-
C# ログイン画面からメイン画面...
-
ZOOMでオンラインミーティング
-
サーブレットによるpostデータ...
-
セッション切れでのリクエスト...
-
遷移元を判定したい!
-
タスクバーやタスクマネージャ...
-
非アクティブな画面を操作する...
-
Wi-Fiのパスワードが指定なしと...
-
ウィンドウの制御について、質...
-
フレーム分けされたJSPでのsubmit
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
三菱GOTの画面切り替えについて
-
画面遷移を行わずに同一ページ...
-
プログラミングで例えばゲーム...
-
フロントエンドフレームワーク...
-
Java-jspの画面入力値保持について
-
Javaプログラミングの質問にな...
-
ボタンを押したあとに画像を表...
-
C# ログイン画面からメイン画面...
-
ASP.NET 画面遷移前の状態を保...
-
C言語で今まで表示していた画面...
-
画面を隠す・消す方法を教えて...
-
JSPかサーブレットでオセロゲーム
-
リンク先として、ページの途中...
-
アドレスバーに引数を表示させ...
-
遷移元を判定したい!
-
登録後、呼び出し元ページに戻...
-
ServletからServletへの値渡し
-
非アクティブな画面を操作する...
-
セッション切れでのリクエスト...
-
Wi-Fiのパスワードが指定なしと...
おすすめ情報