3つのテキストボックスを持つWindowsフォームアプリケーションがあります。最初のテキストボックスのテキストが0の場合、他の2つのテキストボックスは読み取り専用に設定されます。最後のテキストボックスは読み取り専用で、2の場合はすべてのテキストボックスが編集可能です。他のテキストに依存するC#テキストボックス読み取り専用
私のコードは動作しますが、私は値を入力して、それをプログラムがクラッシュを変更した場合、どのように私はこの問題を解決することができますか?
ここでは、値に応じて(Tusk1Length)と(Tusk2Length)の読み取り専用プロパティを変更する最初のテキストボックス(NumberOfTusks)のコードです。
private void NumberOfTuskstxt_TextChanged(object sender, EventArgs e)
{
if (int.Parse(NumberOfTuskstxt.Text) == 0)
{
Tusk1Lengthtxt.Text = "N/A";
Tusk1Lengthtxt.ReadOnly = true;
Tusk2Lengthtxt.Text = "N/A";
Tusk2Lengthtxt.ReadOnly = true;
}
else if (int.Parse(NumberOfTuskstxt.Text) == 1)
{
Tusk1Lengthtxt.Text = "";
Tusk1Lengthtxt.ReadOnly = false;
Tusk2Lengthtxt.Text = "N/A";
Tusk2Lengthtxt.ReadOnly = true;
}
else
{
Tusk1Lengthtxt.Text = "";
Tusk1Lengthtxt.ReadOnly = false;
Tusk2Lengthtxt.Text = "";
Tusk2Lengthtxt.ReadOnly = false;
}
}
私はNumberOfTusksに1を入力して、値を2に変更し、コードがクラッシュし、私にこれを与えた場合は、「「 クラッシュを」型「にSystem.FormatException」の未処理の例外ががmscorlib.dllで発生しました」私はバックスペースを押した後に起こります。どのように私はこれを修正することができますので、私はそれがクラッシュしない値を変更するか?
番号以外に変更していますか?それは確かにあなたに問題を引き起こすだろう。毎回あなたの入力が整数になると仮定するのではなく、少なくとも 'int.TryParse'を使うべきです。 –
入力はintのままです。 1から2に変更するとクラッシュします。 –
いいえ、あなたのコメントは間違っています。入力はintのままではありません。あなたはプロセス中の文字を削除しているので、入力を2に設定する前に '' "'になっています。 –