A
からまでの文字を含む定義済みの文字列配列がありますQ
。
string[] SkippedAreasArray = new string[] {"A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q"};
内部 Windows フォームではTextBox
、ユーザーは次のように skippedAreas を入力できA,B,C,D...
ます。入力がこの形式であることが保証されるように、文字とコンマのみを使用するための検証と制限があります。
私がしていることは、ユーザー入力を取得して別の文字列配列に入力することです:
string[] SkippedAreasFromForm = new string[17];
...
SkippedAreasFromForm = (txtSkippedAreas.Text).Split(',');
ここで、私が支援を求めているトリッキーな部分が来ます。ユーザーは、たとえば -3 と入力する必要がNumber of areas
あります。エリアの数が 2 の場合、彼はのみ使用でき、エリアの数が 4 の場合、 、、およびが使用可能です。A
B
C
A
B
A
B
C
D
必要なのは、ユーザー入力が取り込まれた配列SkippedAreasFromForm
に上記の基準に一致しない領域があるかどうかを確認することです。
これがコーディングで意味すること - からすべての要素を SkippedAreasFromForm
取得し、定義済みの整数値を取得して、SkippedAreasArray
この値が「領域の数」として入力した値と等しいか、それよりも大きい (>=) かどうかを確認する必要があります。選択した番号の範囲外の領域がある場合は、エラーが表示されます。
私が今持っているのは:
foreach (string tempAreaValue in SkippedAreasFromForm)
{
for (int i = 0; i < SkippedAreasArray.Length; i++)
{
if (tempAreaValue == SkippedAreasArray[i])
{
if ((i + 1) > entity.AreasCnt)
{
MessageBox.Show("You must use areas only within the Number of Areas scope!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtSkippedAreas.Focus();
return false;
}
}
}
}
いくつかのテストでは、私はそれを動作させました。しかし、最初に-少なくとも私にとっては複雑すぎるようです。2 つ目 - このアルゴリズムが必要に応じて正確に機能しているかどうかはわかりません。または、運によって正しい結果が得られているだけです。3 番目 - 私は現在 2 か月間 C# をコーディングしていますが、これは LINQ 式の優れた候補のように思えます。