2011-01-11 11 views
4

私はwinformアプリケーションを開発しています。いくつかの値(xとする)に基づいて、ユーザーに警告を表示し、タイマに他の値(y)を更新してxに影響を与え、xの値をチェックしてユーザーに警告を表示します。 アラートメッセージボックスに「はい」または「いいえ」オプションを表示します。ユーザーが「はい」をクリックしてから処理を実行すると表示されます。プロパティまたはインデクサ 'System.Nullable.Value'を割り当てることはできません - 読み込み専用です

ユーザーが長い時間アラートに応答しなかった場合(たとえば10分)、複数のアラートメッセージが表示されることがあります。無効なDialogResult変数を作成しないようにしたいので、ユーザーがオプションを選択したかどうかを確認できます。か否か。今の問題は、それは私が私が-Propertyまたはインデクサをエラー与え、その変数

taskAlert.Value=MessageBox.Show(kMessage, appErrorTitle, MessageBoxButtons.YesNo); 

の値を設定することはできないということである「System.Nullable.Value」に割り当てることはできません - それが唯一

読まれます

答えて

7

問題は、Valueプロパティに直接割り当てようとしていることです。Valueプロパティは読み取り専用としてマークされています。そのため、コンパイラがそのエラーを表示しています。

代わりに、タイプがNullable<T>の変数に、他のタイプとまったく同じ方法で値を割り当てる必要があります。例えば、上記のコードは単純になる:

taskAlert = MessageBox.Show(kMessage, appErrorTitle, MessageBoxButtons.YesNo); 

変更する唯一のものは値にアクセスです。最初にHasValue propertyをチェックする必要があり、Trueを返した場合はValue propertyを使用して値を取得します。 HasValueプロパティがFalseを返す場合、オブジェクトの値は未定義です。

1

ここでは、null値を入力する必要はありません。

列挙型は、ユーザーがオプションを選択しなかったことを示すために使用できる値 "なし"を持っています。

関連する問題