次の図は、データグリッド上で、Mr., Ms., Dr. であるべきところに、abcと間違えて
入力した場合のエラー表示画面です。
これは、DataRow.SetColumnError()メソッドで、列を指定してエラーメッセージを
セットすることにより、自動的にErrorProviderと同様なエラーを表示してくれます。
以下の例では、Northwind データベースの "Employees"テーブルをDataGridに表示した状態で、
Form1_Load で、RowChanged イベントに OnDataRowChangedイベントハンドラを追加し、
イベントハンドラで入力審査を行います。入力に間違いがある場合には、SetColumnError()で
エラーをセットするだけの、非常にシンプルな内容です。
Source Code |
private void Form1_Load(object sender, System.EventArgs e)
{
sqlDataAdapter1.Fill( dataSet11 );
dataSet11.Tables["Employees"].RowChanged += new DataRowChangeEventHandler(OnDataRowChanged);
}
private void OnDataRowChanged(Object sender, DataRowChangeEventArgs e)
{
string titleOfCourtesy = (string)e.Row["TitleOfCourtesy"];
if( titleOfCourtesy != "Mr." ||
titleOfCourtesy != "Ms." ||
titleOfCourtesy != "Dr." )
{
e.Row.SetColumnError("TitleOfCourtesy", "Mr. or Ms. or Dr.");
}
}
private void button1_Click(object sender, System.EventArgs e)
{
foreach(DataRow row in dataSet11.Tables["Employees"].GetErrors())
{
Console.WriteLine(row.GetColumnError("TitleOfCourtesy"));
}
} |