ハイパーリンク型セルのLinkプロパティが未設定またはURLとして無効な文字列が設定されている場合には、ブラウザを起動させたくない

文書番号 : 38921     文書種別 : 使用方法     登録日 : 2015/06/29     最終更新日 : 2015/06/29
文書を印刷する
対象製品
SPREAD for Windows Forms 8.0J
詳細
ハイパーリンク型セルのLinkプロパティが未設定またはURLとして無効な文字列が設定されている場合でもブラウザは起動します。ブラウザを起動させたくない場合には、Errorイベントをハンドリングします。

◎サンプルコード(VB)
Private Sub FpSpread1_Error(ByVal sender As System.Object, ByVal e As FarPoint.Win.Spread.ErrorEventArgs) Handles FpSpread1.Error
  If e.EditError = FarPoint.Win.Spread.EditError.InvalidHyperlink Then
    e.Cancel = True
  End If
End Sub


◎サンプルコード(C#)
private void fpSpread1_Error(object sender, FarPoint.Win.Spread.ErrorEventArgs e)
{
  if (e.EditError == FarPoint.Win.Spread.EditError.InvalidHyperlink)
  {
    e.Cancel = true;
  }
}


なお、ButtonClickedイベントやHyperLinkClickedイベント内で、メッセージボックスや別フォームなどのフォーカスの移動を伴う処理を実装している場合には、Errorイベントをハンドリングしていてもブラウザが起動してしまいます。この場合、メッセージボックスや別フォームの表示を行った後で、セルを再度編集状態にすることで回避できます。

◎サンプルコード(VB)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  Dim hlCell As New FarPoint.Win.Spread.CellType.HyperLinkCellType()
  hlCell.Text = "test"
  FpSpread1.ActiveSheet.Columns(0).CellType = hlCell
End Sub

Private Sub FpSpread1_ButtonClicked(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.EditorNotifyEventArgs) Handles FpSpread1.ButtonClicked
  ' [Case1]
  If TypeOf (FpSpread1.ActiveSheet.GetCellType(e.Row, e.Column)) Is FarPoint.Win.Spread.CellType.HyperLinkCellType Then
    MessageBox.Show("ButtonClicked!")
    FpSpread1.StartCellEditing(EventArgs.Empty, False)
  End If
End Sub

Private Sub FpSpread1_HyperLinkClicked(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.HyperLinkClickedEventArgs) Handles FpSpread1.HyperLinkClicked
  '' [Case2]
  'MessageBox.Show("HyperLinkClicked!")
  'FpSpread1.StartCellEditing(EventArgs.Empty, False)
End Sub

Private Sub FpSpread1_Error(ByVal sender As Object, ByVal e As FarPoint.Win.Spread.ErrorEventArgs) Handles FpSpread1.Error
  If e.EditError = FarPoint.Win.Spread.EditError.InvalidHyperlink Then
    e.Cancel = True
  End If
End Sub


◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
  FarPoint.Win.Spread.CellType.HyperLinkCellType hlCell = new FarPoint.Win.Spread.CellType.HyperLinkCellType();
  hlCell.Text = "test";
  fpSpread1.ActiveSheet.Columns[0].CellType = hlCell;
}

private void fpSpread1_ButtonClicked(object sender, FarPoint.Win.Spread.EditorNotifyEventArgs e)
{
  // [Case1]
  if (fpSpread1.ActiveSheet.GetCellType(e.Row, e.Column) is FarPoint.Win.Spread.CellType.HyperLinkCellType)
  {
    MessageBox.Show("ButtonClicked!");
    fpSpread1.StartCellEditing(EventArgs.Empty, false);
  }
}

private void fpSpread1_HyperLinkClicked(object sender, FarPoint.Win.Spread.HyperLinkClickedEventArgs e)
{
  //// [Case2]
  //MessageBox.Show("HyperLinkClicked!");
  //fpSpread1.StartCellEditing(EventArgs.Empty, false);
}

private void fpSpread1_Error(object sender, FarPoint.Win.Spread.ErrorEventArgs e)
{
  if (e.EditError == FarPoint.Win.Spread.EditError.InvalidHyperlink)
  {
    e.Cancel = true;
  }
}
関連情報
キーワード
セル型