実現したいこと
現在Visual Studio 2022でC#を用いて、Windows フォームアプリケーションを作成しています。
フォームの画面遷移が多いアプリケーションになるのですが、その画面遷移をユーザコントロールの表示/非表示の切り替えで実現させようと考えています。
あるクラス(Login.cs)で定義したメソッド(ユーザコントロールのVisibleのtrue, falseを変更する)を、別のクラス(uc_login.cs)で使用したいです。
発生している問題・分からないこと
実行してもVisibleがfalseに設定されず、ユーザコントロールの表示切り替えができません。
ボタンクリックの際に設定させるように記述したつもりですが、該当のボタンを押しても表示が切り替わらない状態です。
エラーを吐いていないため何が間違っているのかわかりません。
非常に素人質問となり恐縮ですが、解決法をご教示いただけますと幸いです。
該当のソースコード
uc_login.cs
1namespace StressCheck_App 2{ 3 public partial class uc_login : UserControl 4 { 5 public uc_login() 6 { 7 InitializeComponent(); 8 } 9 private void btnLogin_Click(object sender, EventArgs e) 10 { 11 try 12 { 13 using var sql = Db.Conn.CreateCommand(); 14 sql.CommandText = "SELECT * FROM EMPLOYEE WHERE EMP_ID = @EMP_ID"; 15 sql.Parameters.AddWithValue("@EMP_ID", textID.Text); 16 17 using var reader = sql.ExecuteReader(); 18 if (reader.Read()) 19 { 20 MessageBox.Show($"登録済みID:{textID.Text}"); 21 22 var objectLoginClass = new Login(); 23 objectLoginClass.SwitchUC(); //ここで、ユーザコントロールuc_login1を非表示にし、ユーザコントロールuc_Start1を表示させたい 24 25 } 26 else 27 { 28 MessageBox.Show($"従業員ID:{textID.Text}は未登録です", "検索エラー"); 29 textID.Text = ""; 30 textPass.Text = ""; 31 } 32 } 33 catch (SqlException ex) 34 { 35 Db.ErrorMessage(ex); 36 } 37 } 38 } 39}
Login.cs
1namespace StressCheck_App 2{ 3 public partial class Login : Form 4 { 5 6 7 public Login() 8 { 9 InitializeComponent(); 10 11 uc_login1.Visible = true; //uc_login1は最初に表示させたいユーザコントロール 12 uc_login1.Dock = DockStyle.Fill; 13 14 uc_Start1.Visible = false; //uc_Start1はuc_login1の直後に表示させたいユーザコントロール 15 } 16 17 private void Form1_Load(object sender, EventArgs e) 18 { 19 } 20 21 public void SwitchUC() //フォームに表示させるユーザーコントロールを変更するメソッド 22 { 23 uc_login1.Visible = false; //uc_login1を非表示 24 uc_Start1.Visible = true; //uc_Start1を表示 25 } 26 } 27}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
uc_login.csのMessageBoxの表示が邪魔をしているか?と思い、その前後に var objectLoginClass ~とobjectLoginClass.SwitchUS();の2文を移動させたりしてみましたが、変化はありませんでした。
補足
特になし
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/04/18 04:37