DataGridTextBoxColumn.Edit 方法

定义

准备用于编辑的单元格。

protected public:
 override void Edit(System::Windows::Forms::CurrencyManager ^ source, int rowNum, System::Drawing::Rectangle bounds, bool readOnly, System::String ^ instantText, bool cellIsVisible);
protected public:
 override void Edit(System::Windows::Forms::CurrencyManager ^ source, int rowNum, System::Drawing::Rectangle bounds, bool readOnly, System::String ^ displayText, bool cellIsVisible);
protected internal override void Edit(System.Windows.Forms.CurrencyManager source, int rowNum, System.Drawing.Rectangle bounds, bool readOnly, string instantText, bool cellIsVisible);
protected internal override void Edit(System.Windows.Forms.CurrencyManager source, int rowNum, System.Drawing.Rectangle bounds, bool readOnly, string displayText, bool cellIsVisible);
override this.Edit : System.Windows.Forms.CurrencyManager * int * System.Drawing.Rectangle * bool * string * bool -> unit
override this.Edit : System.Windows.Forms.CurrencyManager * int * System.Drawing.Rectangle * bool * string * bool -> unit
Protected Friend Overrides Sub Edit (source As CurrencyManager, rowNum As Integer, bounds As Rectangle, readOnly As Boolean, instantText As String, cellIsVisible As Boolean)
Protected Friend Overrides Sub Edit (source As CurrencyManager, rowNum As Integer, bounds As Rectangle, readOnly As Boolean, displayText As String, cellIsVisible As Boolean)

参数

source
CurrencyManager

CurrencyManager DataGrid列所属的控件。

rowNum
Int32

正在编辑的此列中的行号。

bounds
Rectangle

要在其中定位控件的边界 Rectangle

readOnly
Boolean

一个值,该值指示列是否为只读。 如果值为只读,则为 .

instantTextdisplayText
String

要显示在控件中的文本。

cellIsVisible
Boolean

一个值,该值指示单元格是否可见。 true 如果单元格可见,则为否则,为 false.

示例

下面的示例使用 Edit 该方法更改控件中 DataGrid 单击的单元格的文本。

public ref class MyGridColumn: public DataGridTextBoxColumn
{
public:
   void EditCol( CurrencyManager^ cm, int rowNum, Rectangle cellRect, bool readOnly, String^ myString, bool isVisible )
   {
      this->Edit( cm, rowNum, cellRect, readOnly, myString, isVisible );
   }

};

public ref class Form1: public Form
{
protected:
   DataGrid^ dataGrid1;
   DataSet^ myDataSet;
private:
   void dataGrid1_MouseDown( Object^ sender, MouseEventArgs^ e )
   {
      
      // Use the HitTest method to get a HitTestInfo object.
      DataGrid::HitTestInfo ^ hi;
      DataGrid^ grid = dynamic_cast<DataGrid^>(sender);
      hi = grid->HitTest( e->X, e->Y );
      
      // Test if the clicked area was a cell.
      if ( hi->Type == DataGrid::HitTestType::Cell )
      {
         
         // If it's a cell, get the GridTable and CurrencyManager of the
         // clicked table.         
         DataGridTableStyle^ dgt = dataGrid1->TableStyles[ 0 ];
         CurrencyManager^ cm = dynamic_cast<CurrencyManager^>(this->BindingContext[ myDataSet->Tables[ dgt->MappingName ] ]);
         
         // Get the Rectangle of the clicked cell.
         Rectangle cellRect = grid->GetCellBounds( hi->Row, hi->Column );
         
         // Get the clicked DataGridTextBoxColumn.
         MyGridColumn^ gridCol = dynamic_cast<MyGridColumn^>(dgt->GridColumnStyles[ hi->Column ]);
         
         // Edit the value.
         gridCol->EditCol( cm, hi->Row, cellRect, false, "New Text", true );
      }
   }

};
public class Form1: Form
{
protected DataGrid dataGrid1;
protected DataSet myDataSet;

private void dataGrid1_MouseDown(object sender, MouseEventArgs e)
{
    // Use the HitTest method to get a HitTestInfo object.
    DataGrid.HitTestInfo hi;   
    DataGrid grid = (DataGrid)sender;
    hi=grid.HitTest(e.X, e.Y);
    // Test if the clicked area was a cell.
    if (hi.Type == DataGrid.HitTestType.Cell)
    {
       // If it's a cell, get the GridTable and CurrencyManager of the
       // clicked table.         
       DataGridTableStyle dgt = dataGrid1.TableStyles[0];     
       CurrencyManager cm = (CurrencyManager)
        this.BindingContext[myDataSet.Tables[dgt.MappingName]];
       // Get the Rectangle of the clicked cell.
       Rectangle cellRect = grid.GetCellBounds(hi.Row, hi.Column);
       // Get the clicked DataGridTextBoxColumn.
       MyGridColumn gridCol =
       (MyGridColumn)dgt.GridColumnStyles[hi.Column];
       // Edit the value.
       gridCol.EditCol(cm, hi.Row, cellRect, false, "New Text", true);
    }
 }
}

public class MyGridColumn:DataGridTextBoxColumn{
   public void EditCol(CurrencyManager cm, int rowNum, 
      Rectangle cellRect, bool readOnly, 
      string myString, bool isVisible){
      this.Edit(cm, rowNum, cellRect, readOnly, myString, isVisible);
   }
}
Public Class Form1
   Inherits Form
   Protected dataGrid1 As DataGrid
   Protected myDataSet As DataSet
    
   
    Private Sub dataGrid1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)
        ' Use the HitTest method to get a HitTestInfo object.
        Dim hi As DataGrid.HitTestInfo
        Dim grid As DataGrid = CType(sender, DataGrid)
        hi = grid.HitTest(e.X, e.Y)
        ' Test if the clicked area was a cell.
        If hi.Type = DataGrid.HitTestType.Cell Then
            ' If it's a cell, get the GridTable and CurrencyManager of the
            ' clicked table.         
            Dim dgt As DataGridTableStyle = dataGrid1.TableStyles(0)
            Dim cm As CurrencyManager = CType _
            (Me.BindingContext(myDataSet.Tables(dgt.MappingName)), _
            CurrencyManager)
            ' Get the Rectangle of the clicked cell.
            Dim cellRect As Rectangle = _
            grid.GetCellBounds(hi.Row, hi.Column)
            ' Get the clicked DataGridTextBoxColumn.
            Dim gridCol As MyGridColumn = CType _
            (dgt.GridColumnStyles(hi.Column), MyGridColumn)
            ' Edit the value.
            gridCol.EditCol(cm, hi.Row, cellRect, False, "New Text", True)
        End If
    End Sub
End Class 

Public Class MyGridColumn
Inherits DataGridTextBoxColumn
   Public Sub EditCol(cm As CurrencyManager , rowNum As integer , _
   cellRect As Rectangle , bReadOnly As Boolean , _
   myString As String , isVisible As Boolean )
      me.Edit(cm, rowNum, cellRect, bReadOnly, myString, isVisible)
   End Sub
End Class

注解

Edit 控件放在 TextBox 要编辑的单元格的位置的网格上。 编辑操作即将开始时,该方法由 DataGridBeginEdit 的方法调用。

适用于

另请参阅