0

我正在尝试验证用户在可编辑的网格视图中输入的内容。我使用事件 CellLeave 来验证输入,如下所示:

private void membersGrid_CellLeave(object sender, DataGridViewCellEventArgs e)
{
    // Datatable that will hold the schema for the Members table
    DataTable dtMeta;

    // SqlDataAdapter is already filled and is now used to get the metadata
    daAllMembers.FillSchema(dtMeta, SchemaType.Source);

    // Define a type instance of the current column from the metadata table dtMeta
    System.Type cellType = dtMeta.Columns[e.ColumnIndex].DataType;

    // Get an object from the editted cell
    Object objCellValue = membersGrid[e.ColumnIndex, e.RowIndex].Value;

    // This is where i'm stuck, how can I do this?
    cellType.TryParse(objCellValue);
}

我希望你明白我想要做什么。我基本上想尝试将对象解析为该表的元数据中定义的类型。

任何帮助表示赞赏;)

4

1 回答 1

0

我假设您只想验证文本输入。其他单元格类型,如复选框或组合框,自然会限制用户输入。您可以执行以下操作:

  1. 创建一个派生自 DataGridViewTextBoxCell 的抽象类:

    公共抽象类 MyTextBox : DataGridViewTextBoxCell { virtual bool ValidateTextInput(); }

  2. 对于您要验证的每种不同类型的数据网格视图单元格类型,从该基类派生一个类。例如:

    public class StateCell : MyTextBox { override ValidateTextInput() { // 验证文本是有效的状态缩写 } }

  3. 将您的自定义、验证数据网格视图单元格类型放入您的数据网格视图 ( http://msdn.microsoft.com/en-us/library/aa730881(v=vs.80).aspx )。

于 2013-04-30T15:33:47.367 回答