ハイパーリンク型セルのリンク文字列をクリックした際に独自の処理を行うことはできますか?

文書番号 : 38920     文書種別 : 使用方法     登録日 : 2015/06/29     最終更新日 : 2015/06/29
文書を印刷する
対象製品
SPREAD for Windows Forms 8.0J
詳細
ハイパーリンク型セルをクリックした際に発生するButtonClick イベントを取得することにより、例えばリンク文字列をクリック時に別のフォームを新たに起動する処理や、URLにアクセスする前に確認のダイアログを表示させるといった独自の処理を行うことができます。

◎サンプルコード(VB)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    ' 複数のリンクから成るハイパーリンク型セルを設定します
    Dim link As New FarPoint.Win.Spread.CellType.HyperLinkCellType()
    link.Text = "ABC or XYZ."
    link.Links = New String() {"ABC", "XYZ"}
    link.LinkAreas = New LinkArea() {New LinkArea(0, 3), New LinkArea(7, 3)}
    FpSpread1.ActiveSheet.Cells(0, 0).CellType = link
    FpSpread1.ActiveSheet.Columns(0).Width = 100

End Sub

Private Sub FpSpread1_ButtonClicked(ByVal sender As System.Object, ByVal e As FarPoint.Win.Spread.EditorNotifyEventArgs) Handles FpSpread1.ButtonClicked

    ' FarPointハイパーリンクコントロールを取得します
    Dim linkControl As FarPoint.Win.FpHyperlink = FpSpread1.EditingControl
    Dim max As Integer = linkControl.LinksVisited.Length
    For i As Integer = 0 To max - 1
        If linkControl.LinksVisited(i) = True Then

            ' 独自の処理を行います
            MessageBox.Show(linkControl.Links(i))

            linkControl.LinksVisited(i) = False
            Return
        End If
    Next

End Sub


◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
    // 複数のリンクから成るハイパーリンク型セルを設定します
    FarPoint.Win.Spread.CellType.HyperLinkCellType link = new FarPoint.Win.Spread.CellType.HyperLinkCellType();
    link.Text = "ABC or XYZ.";
    link.Links = new string[] { "ABC", "XYZ" };
    link.LinkAreas = new LinkArea[] { new LinkArea(0, 3), new LinkArea(7, 3) };
    fpSpread1.ActiveSheet.Cells[0, 0].CellType = link;
    fpSpread1.ActiveSheet.Columns[0].Width = 100;
}

private void fpSpread1_ButtonClicked(object sender, FarPoint.Win.Spread.EditorNotifyEventArgs e)
{
    // FarPointハイパーリンクコントロールを取得します
    FarPoint.Win.FpHyperlink linkControl = (FarPoint.Win.FpHyperlink)fpSpread1.EditingControl;
    int max = linkControl.LinksVisited.Length;
    for (int i = 0; i < max; i++)
    {
        if (linkControl.LinksVisited[i] == true)
        {
            // 独自の処理を行います
            MessageBox.Show(linkControl.Links[i]);

            linkControl.LinksVisited[i] = false;
            return;
        }
    }
}
関連情報
キーワード
セル型