SPREAD for Windows Forms 10.0J サンプルコード集
クリックされたXY座標からセルインデックスを取得する

通常、クリックされたセルの行列インデックス情報はCellClickイベントの引数e(CellClickEventArgsクラス)より取得することができます。また同引数よりXY座標の取得も可能ですが、例えばMouseDownイベントを実装し、取得したXY座標からクリックされたセルの行列インデックス情報を取得することもできます。

具体的にはFpSpreadクラスのGetCellFromPixelメソッド呼び出しを行うことで、対象となるセル情報がCellRangeクラス形式で取得されますので、各メンバより行列インデックス情報等を取得します。以下のサンプルでは、シート上の通常セルをクリックした場合のインデックス取得例を紹介しています。なお、固定行(列)上での取得方法については下記メモをご参照ください。

  • GetCellFromPixelメソッド呼び出し時、指定した位置にセルがない場合はインデックス(-1,-1)が返されます。(ヘッダやグレイエリア領域など)
  • シート上の固定列や固定行は異なるビューポートとして存在しています。そのため、これらに属する行列上でのセルインデックス情報を取得したい場合、当メソッド呼び出し時には引数の指定方法を独自に使い分ける必要があります。

    クリックしたセル 引数の指定方法
    通常の行列上に存在 FpSpread1.GetCellFromPixel(0, 0, e.X, e.Y)
    固定行上に存在 FpSpread1.GetCellFromPixel(-1, 0, e.X, e.Y)
    固定列上に存在 FpSpread1.GetCellFromPixel(0, -1, e.X, e.Y)
    固定行且つ固定列上に存在 FpSpread1.GetCellFromPixel(-1, -1, e.X, e.Y)
    固定行(末尾行)上に存在 FpSpread1.GetCellFromPixel(1, 0, e.X, e.Y)
    固定列(末尾列)上に存在 FpSpread1.GetCellFromPixel(0, 1, e.X, e.Y)
    固定行(末尾行)且つ固定列(末尾列)に存在 FpSpread1.GetCellFromPixel(1, 1, e.X, e.Y)

 private void fpSpread1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
 {

   //固定行列(および行列ヘッダ)ではない通常セルのマウスクリックポイントよりセルインデックスを取得します
   FarPoint.Win.Spread.Model.CellRange cr;
   cr = fpSpread1.GetCellFromPixel(0, 0, e.X, e.Y);

   Console.WriteLine("マウスクリックされたセルの行インデックス:" + cr.Row.ToString());
   Console.WriteLine("マウスクリックされたセルの列インデックス:" + cr.Column.ToString());

 }
 Private Sub FpSpread1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles FpSpread1.MouseDown

   '固定行列(および行列ヘッダ)ではない通常セルのマウスクリックポイントよりセルインデックスを取得します
   Dim cr As FarPoint.Win.Spread.Model.CellRange
   cr = FpSpread1.GetCellFromPixel(0, 0, e.X, e.Y)

   Console.WriteLine("マウスクリックされたセルの行インデックス:" + cr.Row.ToString)
   Console.WriteLine("マウスクリックされたセルの列インデックス:" + cr.Column.ToString)

 End Sub

 

 


© 2004-2017, GrapeCity inc. All rights reserved.