-3

C# で使用したい vb.net のコードがあります。コードは次のとおりです。

Dim cell As DataGridViewImageCell = CType(tempGrid.Rows(e.RowIndex).Cells(e.ColumnIndex), DataGridViewImageCell)

対応する C# コードを取得しようとしています:

public void gridmouseclick(object sender, MouseEventArgs e)
    {
        int i;
        DataGridViewCell cell;

        for (i = 0; i <= 1 - 1; i++)
        {
            cell = (DataGridViewCell)grid[i].Rows[e.X].Cells[e.Y];   
            if (e.Button == MouseButtons.Left)
            {
                cell.Value = imglst.Images[1];
            }
            else if (e.Button == MouseButtons.Right)
            {
                cell.Value = imglst.Images[0];
            }
        }
    }

imglstそのImageListため、グリッドセルをクリックすると例外が発生します。例外は次のとおりです。

Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

私はgridmouseclickこのように割り当てています....

grid[i].CellMouseClick += new DataGridViewCellMouseEventHandler(this.gridmouseclick);

この例外を取り除くにはどうすればよいですか?

4

3 に答える 3

0

ここにC#があります:

DataGridViewImageCell cell = (DataGridViewImageCell)tempGrid.Rows[e.RowIndex].Cells[e.ColumnIndex]; 

キーポイント:

  1. CType(SourceObject, TargetType)キャストは と書きます(TargetType)SourceObject
  2. インデックスObject(index)は角括弧で書かれていますObject[index]
  3. Dim ObjectName as Type宣言は次のように書かれていますType ObjectName
于 2012-09-15T06:30:56.310 に答える
0

単純

DataGridViewImageCell cell = 
(DataGridViewImageCell)tempGrid.Rows[e.RowIndex].Cells[e.ColumnIndex];
于 2012-09-15T06:38:37.753 に答える
0

タイプを変更してください:

DataGridViewImageCell cell =  (DataGridViewImageCell)tempGrid.Rows[e.RowIndex].Cells[e.ColumnIndex];
于 2012-09-15T07:29:23.950 に答える