PowerTools SPREAD for Windows Forms 8.0J 移行ガイド
ハイパーリンク型セルのLinkプロパティが未設定でも、リンク文字列をクリックするとブラウザが起動する


ステータス

バージョン ID 機能分類 対応策
5.0.2016.2008 50163 ハイパーリンク型セル

詳細

旧バージョンでは、ハイパーリンク型セルのLink プロパティが未設定またはURLとして無効な文字列が設定されている場合にはブラウザは起動しませんでした。旧バージョンと同様の動作を実現するには、Error イベントをハンドリングします。

private void fpSpread1_Error(object sender, FarPoint.Win.Spread.ErrorEventArgs e)
{
    if (e.EditError == FarPoint.Win.Spread.EditError.InvalidHyperlink)
    {
        e.Cancel = true;
    }
}
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

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

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;
    }
}
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
関連トピック

 

 


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