SPREAD for Windows Forms 17.0J 移行ガイド > 旧バージョンからの移行 > 旧バージョンとの相違点 > 5.0.2016.2008での変更点 > ハイパーリンク型セルの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