フィールドを省略してフォームを送信すると、メッセージが表示されます。しかし、[OK]をクリックすると、foreachブロックの後のコードも実行されます。どのように起こるのをやめさせるのですか?私はどのようにプログラムの流れをC#で止めますか?
-2
A
答えて
0
Application.Exit()には、間違いなくあなたが見ているような望ましくない副作用があることがあります。フラグを使用して、停止条件の後にコードを誤って実行しないようにしてください。
var isExiting = false;
foreach (Control cnt in panel1.Controls)
{
if (cnt is TextBox)
{
if(cnt.Text==string.Empty)
{
MessageBox.Show("All fields are mandatory");
}
}
else if(cnt is ComboBox)
{
ComboBox cmb = (ComboBox)cnt;
if(cmb.SelectedIndex == -1)
{
isExiting = true;
MessageBox.Show("All fields are mandatory");
Application.Exit();
}
}
}
if(!isExiting){
string gender;
string dob = cmbDate.Text + "/" +cmbMonth.Text + "/"+cmbYear.Text;
if (rbMale.Checked == true)
gender = rbMale.Text;
else
gender = rbFemale.Text;
query = "Insert into Admissions(Admission_date,Student_name,Father_name,Mother_name,DOB,Gender,Address,State, City,Pincode,Admission_for,Previous_school,Fees)values('" + txtAdmDate.Text + "','" + txtStudentName.Text + "','" + txtFatherName.Text + "','" + txtMotherName.Text + "','" + dob + "','" + gender + "','" + txtAddress.Text + "','" + txtState.Text + "','" + txtCity.Text + "','" + txtPincode.Text + "','" + cmbClass.Text + "','" + txtPreviousSchool.Text + "','" + txtFees.Text + "'); SELECT SCOPE_IDENTITY();";
cmd = new SqlCommand(query,con);
con.Open();
int admId = (int)cmd.ExecuteScalar();
con.Close();
}//if !isExiting
0
カスタム例外を作成して、アプリケーションのフローを制御することができます。例外を継承するクラスを作成してください。
public class FieldAreMandatoryException : Exception {
}
エラーが発生した場合は、投げてください。これにより、アプリケーションのフローが停止し、キャッチブロックがトリガーされます。
try
{
foreach (Control cnt in panel1.Controls)
{
if (cnt is TextBox)
{
if (cnt.Text == string.Empty)
{
throw new FieldAreMandatoryException(); //this will stop the flow and continue in the catch clause
}
}
else if (cnt is ComboBox)
{
ComboBox cmb = (ComboBox) cnt;
if (cmb.SelectedIndex == -1)
{
throw new FieldAreMandatoryException(); //this will stop the flow and continue in the catch clause
}
}
}
string gender;
string dob = cmbDate.Text + "/" + cmbMonth.Text + "/" + cmbYear.Text;
if (rbMale.Checked == true)
gender = rbMale.Text;
else
gender = rbFemale.Text;
query =
"Insert into Admissions(Admission_date,Student_name,Father_name,Mother_name,DOB,Gender,Address,State, City,Pincode,Admission_for,Previous_school,Fees)values('" +
txtAdmDate.Text + "','" + txtStudentName.Text + "','" + txtFatherName.Text + "','" +
txtMotherName.Text + "','" + dob + "','" + gender + "','" + txtAddress.Text + "','" +
txtState.Text +
"','" + txtCity.Text + "','" + txtPincode.Text + "','" + cmbClass.Text + "','" +
txtPreviousSchool.Text + "','" + txtFees.Text + "'); SELECT SCOPE_IDENTITY();";
cmd = new SqlCommand(query, con);
con.Open();
int admId = (int) cmd.ExecuteScalar();
con.Close();
}
catch (FieldAreMandatoryException exception) {
Console.Log("All fields are mandatory!");
Environment.Exit(0);
}
}
関連する問題
- 1. 私はどのように応答を流すのですか
- 2. Python:スレッドの中でプログラムの流れを止めてしまうのを避けるには?
- 3. C++プログラムはどのように作られていますか?
- 4. どのように私はSetting.json [流星]
- 5. 例外によりプログラムの停止を防止するにはどうすればよいですか?
- 6. 私のプログラムがTCP接続でフリーズするのを止めるにはC#
- 7. リアクションレスキューミドルウェアの流れはどのように機能しますか?
- 8. タスクリストどのようにタスクCを停止できますか?
- 9. Apache Camel:メッセージはどのように流れますか?
- 10. 私のウェブサイトにどのようにJavaプログラムを埋め込むのですか?
- 11. Pythonではどのようにプログラムをプログラムの中に入れますか
- 12. "a"は私のプログラムでどのように使用されていますか?
- 13. どのように私のCSSファイルを自動マージから流星を停止するには?
- 14. カーネルCプログラムとユーザーレベルCプログラムの間でデータを共有するにはどうすればよいですか?
- 15. アンマネージC++プログラムの構造体をC#プログラムに渡すにはどうすればよいですか?
- 16. Cプログラムに埋め込まれたファイルリソースをどのように拡張するのですか?
- 17. C++プログラムでメモリリークを防止するにはどうすればよいですか?
- 18. C++プログラムにフローツールを含めるにはどうすればいいですか?
- 19. Eclipseでプログラムをどのように進めるのですか?
- 20. 私のプログラムがアクティブなプログラムでないときに、GetKeyStateで値を取得するのを止めるにはどうすればいいですか?
- 21. どのようにポインタエラーを突き止めますか?
- 22. C# - どのようにタイマーを停止しますか?
- 23. Java先物:誰かが私にプログラムの流れを説明できますか
- 24. Javaでのオブジェクト作成の流れはどのようになりますか?
- 25. どのように私はPHPからCプログラムの関数を呼び出すことができますか?
- 26. は、どのように私はC#で
- 27. どのように私はCプログラムのためにタイプするようにCode :: Blocksにエラーを表示させることができますか?
- 28. どのように私はホバリングでjavascript(マーキー)を停止できますか?
- 29. 流星はどのようにブラウザを更新しますか?
- 30. どのように私はプログラムでC#経由でActive Directoryフォレストのルートを取得できますか
*「フィールドを省略してフォームを送信するとメッセージが表示されます」* - 正確な内容を記述してください:どのフィールド?どこ?どのようなメッセージですか? –
ループを終了する場合は、「break」キーワードを使用できます。 – ckuri
私はブレークを使用する場合、foreachループから出てくるでしょうし、またforeachブロックの後にコードを実行します。私が付いているコードを参照してください – SATYA