MESCIUS SPREAD for Windows Forms 17.0J サンプルコード集
選択されたタイミングを取得する(属性を取得する)

シート上のシェイプオブジェクトを選択した場合にはShapeActicatedイベントが発生するため、FpSpreadクラスのActiveWindowlessObjectプロパティとの併用により、現在選択されているオブジェクトの属性を取得することができます。なお、現在選択されているシェイプが存在しない場合、ActiveWindowlessObjectプロパティの値はNothing(C#ではnull)となります。

【実行例】 マウスクリックによる選択

シェイプ選択

  • 選択解除の際に発生するイベントは有りませんので、このような場合にはActiveWindowlessObjectプロパティの内容によって選択/非選択を判断するような対応も必要となります。
  • 全てのシェイプオブジェクトクラスはFarPoint.Win.Spread.DrawingSpace.PSShapeクラスから継承しています。
  • シート上に複数のシェイプオブジェクトが存在する場合でも、選択可能なオブジェクトは常に一つだけとなります。(複数同時選択不可)
  • シェイプオブジェクトを処理する各関数(AddShapeメソッド:追加、GetShapeメソッド:取得、ClearShapesメソッド:全消去、RemoveShapeメソッド:削除)は SheetViewクラスメンバのみサポートしていますので、実装時には当クラスメンバを利用してください。 FarPoint.Win.Spread.DrawingSpace.SpreadShapesContainerクラス(内部使用クラス)からも同等の機能が提供されていますが、当クラスメンバであるこれらの各メソッドは内部使用を目的としているため、動作についてはサポートしていません。

※出力例については本コンテンツ末尾を参照

 private void Form1_Load(object sender, System.EventArgs e)
 {

   //TwoWayArrowシェイプを追加します
   FarPoint.Win.Spread.DrawingSpace.TwoWayArrowShape taw = new FarPoint.Win.Spread.DrawingSpace.TwoWayArrowShape();
   taw.Name = "TwoWayArrow-01";
   taw.BackColor = Color.LightGreen;
   taw.SetBounds(10, 30, 240, 120);

   fpSpread1.ActiveSheet.AddShape(taw);

 }

 private void fpSpread1_ShapeActivated(object sender, System.EventArgs e)
 {

   Console.WriteLine("シェイプが選択されました");
   Console.WriteLine("選択されたシェイプ名は:" + fpSpread1.ActiveWindowlessObject.Name + "です");

   //選択されたシェイプオブジェクトを取得します
   FarPoint.Win.Spread.DrawingSpace.PSShape ps;
   ps = fpSpread1.ActiveSheet.GetShape(fpSpread1.ActiveWindowlessObject.Name);
   Console.WriteLine("選択されたシェイプの背景色は" + ps.BackColor.ToString() + "です");

 }
 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

   'TwoWayArrowシェイプを追加します
   Dim taw As New FarPoint.Win.Spread.DrawingSpace.TwoWayArrowShape
   taw.Name = "TwoWayArrow-01"
   taw.BackColor = Color.LightGreen
   taw.SetBounds(10, 30, 240, 120)

   FpSpread1.ActiveSheet.AddShape(taw)

 End Sub

 Private Sub FpSpread1_ShapeActivated(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.ShapeActivated

   Console.WriteLine("シェイプが選択されました")
   Console.WriteLine("選択されたシェイプ名は:" + FpSpread1.ActiveWindowlessObject.Name + "です")

   '選択されたシェイプオブジェクトを取得します
   Dim ps As FarPoint.Win.Spread.DrawingSpace.PSShape
   ps = FpSpread1.ActiveSheet.GetShape(FpSpread1.ActiveWindowlessObject.Name)
   Console.WriteLine("選択されたシェイプの背景色は" + ps.BackColor.ToString + "です")

 End Sub

出力例

シェイプが選択されました
選択されたシェイプ名は:TwoWayArrow-01です
選択されたシェイプの背景色はColor [LightGreen]です

 

 


© MESCIUS inc. All rights reserved.