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
-
「マスタ」と「テーブル」の違いとはなんでしょうか?
Oracle
-
【C#】別フォームも同時に閉じるには?
C言語・C++・C#
-
-
4
C# 超初心者です。 this.Refresh();という文を使いたいです
C言語・C++・C#
-
5
C#にて別クラスの関数を使いたい
C言語・C++・C#
-
6
別のフォームで記述している関数を実行するには?C#
C言語・C++・C#
-
7
C# TEXTが空白であるLABELは何処に???
C言語・C++・C#
-
8
データベースのデータをTextBoxに入力された値で検索しDataGridViewに表示する方法
Visual Basic(VBA)
-
9
コンボボックスでドロップダウンリストにしたときに・・・・
Visual Basic(VBA)
-
10
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
11
System.IO.Directory.GetFilesの順番
Visual Basic(VBA)
-
12
.NET SqlDataReader のレコード有無判定
Visual Basic(VBA)
-
13
C# ReadOnlyのTextBoxで
C言語・C++・C#
-
14
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
-
15
C#でのForm間のデータ受け渡し、保存について。
C言語・C++・C#
-
16
visual studio でインデントを自動的に揃えるショートカットキー
その他(プログラミング・Web制作)
-
17
C#でTextBoxに数値のみ入力可能とする方法
その他(プログラミング・Web制作)
-
18
ピクチャーボックスの大きさに合わせて画像を表示
Visual Basic(VBA)
-
19
DataGridViewでセルクリックイベントを発生させるには
Visual Basic(VBA)
-
20
DataGridViewの特定列に入力されている重複チェックをしたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Java-jspの画面入力値保持について
-
三菱GOTの画面切り替えについて
-
ServletからServletへの値渡し
-
C言語で今まで表示していた画面...
-
遷移元を判定したい!
-
C# ログイン画面からメイン画面...
-
Strutsの情報保持の仕方について
-
Javascriptのhistory.back()が...
-
window.openした孫画面でSessio...
-
【JSP】input typeで入力された...
-
JavaScriptでページが更新され...
-
ASP.NET 画面遷移前の状態を保...
-
リンク先として、ページの途中...
-
HTTPステータスコードを取得(VB...
-
セッション切れでのリクエスト...
-
非アクティブな画面を操作する...
-
ASP.NETでファイルをアップロー...
-
SessionとViewStateについて
-
JAVAのセッション変数の上書き...
-
サーブレットによるpostデータ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java-jspの画面入力値保持について
-
三菱GOTの画面切り替えについて
-
C言語で今まで表示していた画面...
-
ServletからServletへの値渡し
-
プログラミングで例えばゲーム...
-
C# ログイン画面からメイン画面...
-
遷移元を判定したい!
-
ASP.NET 画面遷移前の状態を保...
-
画面を隠す・消す方法を教えて...
-
ブラウザアドレスバーからのURL...
-
FormのsubmitでFormの内容がnull
-
ServletからHTMLページへの遷移...
-
Javaプログラミングの質問にな...
-
画像の縦横比固定の計算方法。
-
JAVAのセッション変数の上書き...
-
登録後、呼び出し元ページに戻...
-
Wi-Fiのパスワードが指定なしと...
-
system("cls")について
-
Beautiful Soupのインストール...
-
アドレスバーに引数を表示させ...
おすすめ情報