RTF 파일에서 생성 된 FlowDocument에서 하이퍼 링크가 작동하도록하는 방법

피닉스 스톤 햄

현재 아래 코드를 사용하여 문서를로드하고 문서의 하이퍼 링크를 구독하고 있습니다. 그러나 GetVisuals는 아무것도 반환하지 않습니다. 작동하려면 무엇을 변경해야합니까?

일부 문자가 모든 데이터베이스에 잘 번역되지 않기 때문에 데이터베이스의 base64에 rtf 문서를 저장하고 있습니다.

FlowDocumentScrollViewer의 IsVisibleChanged, LayoutChanged에 대한 하이퍼 링크에 대한 구독을 연결하려고했습니다. 샘플 문서는 여기 텍스트 파일에서 찾을 수 있습니다-https://1drv.ms/t/s!AlTc1v3Zi2qjitQ_acN- cG3mtG - 8ug ? e=HRpV8n

Protected Overrides Sub OnPropertyChanged(e As DependencyPropertyChangedEventArgs)
        MyBase.OnPropertyChanged(e)
        If e.Property Is Base64DocumentProperty Then
            If String.IsNullOrWhiteSpace(Base64Document) Then Return
            Dim range As New TextRange(flowDocument.Document.ContentStart, flowDocument.Document.ContentEnd)
            If ComponentModel.DesignerProperties.GetIsInDesignMode(Me) Then
                range.Text = "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Qua igitur re ab deo vincitur, si aeternitate non vincitur? Quicquid enim a sapientia proficiscitur, id continuo debet expletum esse omnibus suis partibus; Te ipsum, dignissimum maioribus tuis, voluptasne induxit, ut adolescentulus eriperes P. Sed quid attinet de rebus tam apertis plura requirere? Atqui reperies, inquit, in hoc quidem pertinacem; Hoc dixerit potius Ennius: Nimium boni est, cui nihil est mali. Sin autem est in ea, quod quidam volunt, nihil impedit hanc nostram comprehensionem summi boni. Duo Reges: constructio interrete. </p>

<p>An me, inquis, tam amentem putas, ut apud imperitos isto modo loquar? Re mihi non aeque satisfacit, et quidem locis pluribus. Nullus est igitur cuiusquam dies natalis. Deinde dolorem quem maximum? De vacuitate doloris eadem sententia erit. Quid turpius quam sapientis vitam ex insipientium sermone pendere? Et quidem, Cato, hanc totam copiam iam Lucullo nostro notam esse oportebit; At ille pellit, qui permulcet sensum voluptate. Praeclare enim Plato: Beatum, cui etiam in senectute contigerit, ut sapientiam verasque opiniones assequi possit. Cum autem in quo sapienter dicimus, id a primo rectissime dicitur. <a href=""http://loripsum.net/"" target=""_blank"">Age sane, inquam.</a> Quippe: habes enim a rhetoribus; </p>

<p><b>Conferam avum tuum Drusum cum C.</b> <a href=""http://loripsum.net/"" target=""_blank"">Paria sunt igitur.</a> <b>Sed quid sentiat, non videtis.</b> Multa sunt dicta ab antiquis de contemnendis ac despiciendis rebus humanis; Est enim effectrix multarum et magnarum voluptatum. <mark>Igitur ne dolorem quidem.</mark> </p>

"
                Return
            End If

            Using ms = New MemoryStream(Convert.FromBase64String(Base64Document))
                range.Load(ms, DataFormats.Rtf)
            End Using
            SubscribeToHyperlinks()
        End If
    End Sub

    Private Sub SubscribeToHyperlinks()
        Dim hyperlinks = GetVisuals(flowDocument.Document).OfType(Of Hyperlink)
        For Each hyperlink In hyperlinks
            hyperlink.Command = OpenLinkCommand
            hyperlink.CommandParameter = hyperlink.NavigateUri
        Next
    End Sub

    Private Iterator Function GetVisuals(ByVal root As DependencyObject) As IEnumerable(Of DependencyObject)
        For Each child In LogicalTreeHelper.GetChildren(root).OfType(Of DependencyObject)()
            Yield child

            For Each descendants In GetVisuals(child)
                Yield descendants
            Next
        Next
    End Function

전체 사용자 컨트롤입니다.

<UserControl x:Class="InformationViewerButton"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:msl="clr-namespace:MediaSystems"
             mc:Ignorable="d" Height="30" Width="30"
             >
    <Grid Margin="0">
        <ToggleButton Margin="0" Padding="0" x:Name="toggleButton"  DockPanel.Dock="Left" Background="Transparent" BorderThickness="0" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
            <Path Data="M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" Fill="Blue" Stroke="White" Stretch="Uniform"/>
        </ToggleButton>

        <Popup IsOpen="{Binding IsChecked, Source={x:Reference toggleButton}}" PlacementTarget="{Binding ElementName=toggleButton, Mode=OneWay}" Placement="Right" Height="400" Width="800" StaysOpen="False" VerticalOffset="-50" AllowsTransparency="True">
            <Border BorderThickness="1" CornerRadius="5" Padding="3" BorderBrush="Black" Background="White" >
                <FlowDocumentScrollViewer x:Name="flowDocument"  VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Hidden" BorderThickness="0" >
                    <FlowDocument/>
                </FlowDocumentScrollViewer>
            </Border>
        </Popup>
    </Grid>
</UserControl>

뒤에 코드

Imports System.ComponentModel
Imports System.IO

Public Class InformationViewerButton
    Protected Overrides Sub OnPropertyChanged(e As DependencyPropertyChangedEventArgs)
        MyBase.OnPropertyChanged(e)
        If e.Property Is Base64DocumentProperty Then
            If String.IsNullOrWhiteSpace(Base64Document) Then Return
            Dim range As New TextRange(flowDocument.Document.ContentStart, flowDocument.Document.ContentEnd)
            If ComponentModel.DesignerProperties.GetIsInDesignMode(Me) Then
                range.Text = "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Qua igitur re ab deo vincitur, si aeternitate non vincitur? Quicquid enim a sapientia proficiscitur, id continuo debet expletum esse omnibus suis partibus; Te ipsum, dignissimum maioribus tuis, voluptasne induxit, ut adolescentulus eriperes P. Sed quid attinet de rebus tam apertis plura requirere? Atqui reperies, inquit, in hoc quidem pertinacem; Hoc dixerit potius Ennius: Nimium boni est, cui nihil est mali. Sin autem est in ea, quod quidam volunt, nihil impedit hanc nostram comprehensionem summi boni. Duo Reges: constructio interrete. </p>

<p>An me, inquis, tam amentem putas, ut apud imperitos isto modo loquar? Re mihi non aeque satisfacit, et quidem locis pluribus. Nullus est igitur cuiusquam dies natalis. Deinde dolorem quem maximum? De vacuitate doloris eadem sententia erit. Quid turpius quam sapientis vitam ex insipientium sermone pendere? Et quidem, Cato, hanc totam copiam iam Lucullo nostro notam esse oportebit; At ille pellit, qui permulcet sensum voluptate. Praeclare enim Plato: Beatum, cui etiam in senectute contigerit, ut sapientiam verasque opiniones assequi possit. Cum autem in quo sapienter dicimus, id a primo rectissime dicitur. <a href=""http://loripsum.net/"" target=""_blank"">Age sane, inquam.</a> Quippe: habes enim a rhetoribus; </p>

<p><b>Conferam avum tuum Drusum cum C.</b> <a href=""http://loripsum.net/"" target=""_blank"">Paria sunt igitur.</a> <b>Sed quid sentiat, non videtis.</b> Multa sunt dicta ab antiquis de contemnendis ac despiciendis rebus humanis; Est enim effectrix multarum et magnarum voluptatum. <mark>Igitur ne dolorem quidem.</mark> </p>

"
                Return
            End If

            Using ms = New MemoryStream(Convert.FromBase64String(Base64Document))
                range.Load(ms, DataFormats.Rtf)
            End Using
            SubscribeToHyperlinks()
        End If
    End Sub

    Private Sub SubscribeToHyperlinks()
        Dim hyperlinks = GetVisuals(flowDocument.Document).OfType(Of Hyperlink)
        For Each hyperlink In hyperlinks
            hyperlink.Command = OpenLinkCommand
            hyperlink.CommandParameter = hyperlink.NavigateUri
        Next
    End Sub

    Private Iterator Function GetVisuals(ByVal root As DependencyObject) As IEnumerable(Of DependencyObject)
        For Each child In LogicalTreeHelper.GetChildren(root).OfType(Of DependencyObject)()
            Yield child

            For Each descendants In GetVisuals(child)
                Yield descendants
            Next
        Next
    End Function
#Region "OpenLinkCommand"

    Dim _OpenLinkCommand As DelegateCommand

    Protected Sub OpenLink(link As Object)
        Dim uri = CType(link, Uri)
        Process.Start(New ProcessStartInfo(uri.AbsoluteUri))
    End Sub

    Protected Function CanOpenLink(link As Object) As Boolean

        Return True
    End Function

    <DebuggerBrowsable(DebuggerBrowsableState.Never)>
    Public ReadOnly Property OpenLinkCommand As DelegateCommand
        Get
            If _OpenLinkCommand Is Nothing Then
                Dim newAction As New Action(Of Object)(AddressOf OpenLink)
                _OpenLinkCommand = New DelegateCommand(newAction, AddressOf CanOpenLink)
            End If
            Return _OpenLinkCommand
        End Get
    End Property

    Public Sub DoSomething()
        Task.Run(Sub()
                     BackgroundProcess()
                 End Sub)
    End Sub

    Private Sub BackgroundProcess()
        Dim ControlValue As Object
        Application.Current.Dispatcher.Invoke(Sub()
                                                  ControlValue = flowDocument.ToString
                                              End Sub)

        Application.Current.Dispatcher.Invoke(Sub()
                                                  ControlValue = flowDocument.ToString
                                              End Sub)
    End Sub
#End Region

    Private Sub flowDocument_IsVisibleChanged(sender As Object, e As DependencyPropertyChangedEventArgs) Handles flowDocument.IsVisibleChanged
        If flowDocument.IsVisible Then SubscribeToHyperlinks()
    End Sub

    Public Property Base64Document As String
        Get
            Return GetValue(Base64DocumentProperty)
        End Get

        Set(ByVal value As String)
            SetValue(Base64DocumentProperty, value)
        End Set
    End Property

    Public Shared ReadOnly Base64DocumentProperty As DependencyProperty =
                           DependencyProperty.Register("Base64Document",
                           GetType(String), GetType(InformationViewerButton),
                           New PropertyMetadata(Nothing))

End Class

Public Class MVVMExampleViewModel
    Implements ComponentModel.INotifyPropertyChanged

    Private _MajorChange As String
    Public Property MajorChange As String
        Get
            Return _MajorChange
        End Get
        Set(value As String)
            _MajorChange = value
            DoPropertyChanged("MajorChange")
        End Set
    End Property

    Private Sub DoPropertyChanged(propertyname As String)
        RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyname))
    End Sub

    Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
End Class

위임 명령

Imports System.Windows.Input
Imports System.Windows.Threading
Imports System.Windows
Imports System.Threading

Public Class DelegateCommand
    Implements ICommand
    Implements IDisposable

    Dim _dispatcher As Dispatcher

    Private ReadOnly Property MyDispatcher As Dispatcher
        Get
            Return _dispatcher
        End Get
    End Property

    ' Public Event CanExecuteChanged(sender As Object, e As EventArgs) Implements ICommand.CanExecuteChanged

    Public Custom Event CanExecuteChanged As EventHandler Implements ICommand.CanExecuteChanged
        AddHandler(ByVal value As EventHandler)
            AddHandler CommandManager.RequerySuggested, value
        End AddHandler
        RemoveHandler(ByVal value As EventHandler)
            AddHandler CommandManager.RequerySuggested, value
        End RemoveHandler
        RaiseEvent()
            'RaiseEvent CanExecuteChanged(Me, New EventArgs)
        End RaiseEvent
    End Event

    ''' <summary>
    ''' Raises the <see cref="CanExecuteChanged"/> event.
    ''' </summary>
    Protected Overridable Sub OnCanExecuteChanged()
        If Not _dispatcher.CheckAccess() Then
            _dispatcher.Invoke(DirectCast(AddressOf OnCanExecuteChanged, ThreadStart), DispatcherPriority.Normal)
        Else
            CommandManager.InvalidateRequerySuggested()
        End If
    End Sub

    Protected Overrides Sub Finalize()
        MyBase.Finalize()
    End Sub

    Private _canExecute As Predicate(Of Object)
    Private _execute As Action(Of Object)

    ''' <summary>
    ''' Constructs an instance of <c>DelegateCommand</c>.
    ''' </summary>
    ''' <remarks>
    ''' This constructor creates the command without a delegate for determining whether the command can execute. Therefore, the
    ''' command will always be eligible for execution.
    ''' </remarks>
    ''' <param name="execute">
    ''' The delegate to invoke when the command is executed.
    ''' </param>
    Public Sub New(execute As Action(Of Object))
        Me.New(execute, Nothing)
    End Sub

    ''' <summary>
    ''' Constructs an instance of <c>DelegateCommand</c>.
    ''' </summary>
    ''' <param name="execute">
    ''' The delegate to invoke when the command is executed.
    ''' </param>
    ''' <param name="canExecute">
    ''' The delegate to invoke to determine whether the command can execute.
    ''' </param>
    Public Sub New(execute As Action(Of Object), canExecute As Predicate(Of Object))
        'execute.AssertNotNull("execute")
        _execute = execute
        _canExecute = canExecute
        If Application.Current IsNot Nothing Then
            _dispatcher = Application.Current.Dispatcher
        Else
            _dispatcher = Dispatcher.CurrentDispatcher
        End If
    End Sub

    Private Sub OnDispose()
        _canExecute = Nothing
        _execute = Nothing
    End Sub

    ''' <summary>
    ''' Determines whether this command can execute.
    ''' </summary>
    ''' <remarks>
    ''' If there is no delegate to determine whether the command can execute, this method will return <see langword="true"/>. If a delegate was provided, this
    ''' method will invoke that delegate.
    ''' </remarks>
    ''' <param name="parameter">
    ''' The command parameter.
    ''' </param>
    ''' <returns>
    ''' <see langword="true"/> if the command can execute, otherwise <see langword="false"/>.
    ''' </returns>
    Public Function CanExecute(parameter As Object) As Boolean Implements ICommand.CanExecute
        If disposedValue Then Return False
        If _canExecute Is Nothing Then
            Return True
        End If
        If TypeOf _canExecute.Target Is ViewModelBase AndAlso DirectCast(_canExecute.Target, ViewModelBase).IsDisposed Then
            Dispose()
            Return False
        End If

        Return _canExecute(parameter)
    End Function

    ''' <summary>
    ''' Executes this command.
    ''' </summary>
    ''' <remarks>
    ''' This method invokes the provided delegate to execute the command.
    ''' </remarks>
    ''' <param name="parameter">
    ''' The command parameter.
    ''' </param>
    Public Sub Execute(parameter As Object) Implements ICommand.Execute
        If disposedValue Then Return
        _execute(parameter)
    End Sub
    ''' <summary>
    ''' Returns the name of this command
    ''' </summary>
    ''' <value>The name of the command</value>
    ''' <returns>The name of the command</returns>
    ''' <remarks>This has been added for public commands that may be shared between components.</remarks>
    Public Property CommandName As String

#Region "IDisposable Support"
    Private disposedValue As Boolean ' To detect redundant calls

    ' IDisposable
    Protected Overridable Sub Dispose(disposing As Boolean)
        If Not disposedValue Then
            If disposing Then
                ' TODO: dispose managed state (managed objects).
            End If

            ' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below.
            ' TODO: set large fields to null.
        End If
        disposedValue = True
    End Sub

    ' TODO: override Finalize() only if Dispose(disposing As Boolean) above has code to free unmanaged resources.
    'Protected Overrides Sub Finalize()
    '    ' Do not change this code.  Put cleanup code in Dispose(disposing As Boolean) above.
    '    Dispose(False)
    '    MyBase.Finalize()
    'End Sub

    ' This code added by Visual Basic to correctly implement the disposable pattern.
    Public Sub Dispose() Implements IDisposable.Dispose
        ' Do not change this code.  Put cleanup code in Dispose(disposing As Boolean) above.
        Dispose(True)
        ' TODO: uncomment the following line if Finalize() is overridden above.
        ' GC.SuppressFinalize(Me)
    End Sub
#End Region

End Class
피닉스 스톤 햄

더 많은 테스트를 마친 후 문서를 구성하는 데 사용하는 Telerik Document Control이 컨트롤 자체가 아닌 링크 형식을 지정하는 방식에 문제가있는 것으로 나타났습니다.

답변을하지 않아도 시간을내어 보신 분들께 감사드립니다. 좋고 나쁜 rtf 파일이있는 작업 샘플은 여기 github에서 찾을 수 있습니다.

https://github.com/PhoenixStoneham/InformationButtonTester

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Sphinx 문서 빌더에서 생성 된 pdf로 하이퍼 링크를 올바르게 표시하는 방법

분류에서Dev

다른 PHP 파일에서 하이퍼 링크 된 PHP 값을 얻는 방법

분류에서Dev

RTF 형식으로 서식있는 텍스트 상자에 하이퍼 링크를 삽입하는 방법

분류에서Dev

.apk 파일에서 로그인이 작동하도록 fb keyhash를 올바르게 생성하는 방법

분류에서Dev

VBA Excel에서 동적으로 생성 된 라벨에 하이퍼 링크 추가

분류에서Dev

C #에서 자동 생성 된 열을 하이퍼 링크 열로 바꾸기

분류에서Dev

Java에서 특정 기간 동안 생성 된 파일 만 선택하거나 필터링하는 방법

분류에서Dev

동일한 스크립트에서 생성 된 파일을 사용하는 방법

분류에서Dev

AndroidAnnotations에서 생성 된 클래스가 생성자에서 Activity 대신 WeakReference <Activity>를 받도록하는 방법

분류에서Dev

RTF를 사용하여 서식있는 텍스트 상자에서 하이퍼 링크 작동하기

분류에서Dev

임시 파일을 생성하지 않고 쉘 스크립트에서 생성 된 파일 앞에 줄 수를 추가하는 방법

분류에서Dev

동적으로 생성 된 테이블에서 하이퍼 링크 생성 오류 '테이블'은 'HyperLink'유형의 하위를 가질 수 없습니다.

분류에서Dev

동적으로 생성 된 링크를 클릭하여 해당 링크에서 새 동적 페이지를 생성하는 방법은 무엇입니까?

분류에서Dev

C #의 HTM 파일에서 생성 된 Word 문서에 서식있는 텍스트를 작성하는 방법

분류에서Dev

C #의 HTM 파일에서 생성 된 Word 문서에 서식있는 텍스트를 작성하는 방법

분류에서Dev

PHP에서 curl에서 생성 된 json 파일을 디코딩하는 방법

분류에서Dev

하이퍼 링크가 하위 디렉터리의 HTML 파일에서도 작동하도록이 Powershell 코드를 수정하는 방법은 무엇입니까?

분류에서Dev

iOS에서 Facebook 앱 링크가 지연된 링크로 작동하는 방식

분류에서Dev

ASP.NET MVC에서 자동 생성 된 파일에 삽입 된 속성 특성을 유지하는 방법

분류에서Dev

폴더에서 동적으로 생성 된 파일에 대해 동적으로 Symlink를 생성하는 방법

분류에서Dev

Click 또는 Command가 동적으로 생성 된 MenuFlyOutItems에서 작동하도록 할 수 없습니다.

분류에서Dev

의 gnuplot에서 3 열로 된 데이터 파일을 생성하는 방법

분류에서Dev

JasperReports 문서에서 textField의 일부만 하이퍼 링크처럼 작동하도록 만드는 방법은 무엇입니까?

분류에서Dev

React Hooks를 사용할 때 중첩 된 div에서 이벤트가 작동하지 않도록하는 방법

분류에서Dev

<a> 하이퍼 링크 태그에 포함 된 HTML 태그에서 스타일을 지정하는 방법

분류에서Dev

디렉토리에서 가장 최근에 생성 된 파일을 검색하는 방법

분류에서Dev

C #에서 이전 무작위로 생성 된 동일한 키를 생성하는 방법

분류에서Dev

사용자가 링크를 클릭하면 Outlook phpexcel을 열 때 이메일을 셀에 하이퍼 링크로 작성하는 방법은 무엇입니까?

분류에서Dev

사용자가 링크를 클릭하면 Outlook phpexcel을 열 때 이메일을 셀에 하이퍼 링크로 작성하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Sphinx 문서 빌더에서 생성 된 pdf로 하이퍼 링크를 올바르게 표시하는 방법

  2. 2

    다른 PHP 파일에서 하이퍼 링크 된 PHP 값을 얻는 방법

  3. 3

    RTF 형식으로 서식있는 텍스트 상자에 하이퍼 링크를 삽입하는 방법

  4. 4

    .apk 파일에서 로그인이 작동하도록 fb keyhash를 올바르게 생성하는 방법

  5. 5

    VBA Excel에서 동적으로 생성 된 라벨에 하이퍼 링크 추가

  6. 6

    C #에서 자동 생성 된 열을 하이퍼 링크 열로 바꾸기

  7. 7

    Java에서 특정 기간 동안 생성 된 파일 만 선택하거나 필터링하는 방법

  8. 8

    동일한 스크립트에서 생성 된 파일을 사용하는 방법

  9. 9

    AndroidAnnotations에서 생성 된 클래스가 생성자에서 Activity 대신 WeakReference <Activity>를 받도록하는 방법

  10. 10

    RTF를 사용하여 서식있는 텍스트 상자에서 하이퍼 링크 작동하기

  11. 11

    임시 파일을 생성하지 않고 쉘 스크립트에서 생성 된 파일 앞에 줄 수를 추가하는 방법

  12. 12

    동적으로 생성 된 테이블에서 하이퍼 링크 생성 오류 '테이블'은 'HyperLink'유형의 하위를 가질 수 없습니다.

  13. 13

    동적으로 생성 된 링크를 클릭하여 해당 링크에서 새 동적 페이지를 생성하는 방법은 무엇입니까?

  14. 14

    C #의 HTM 파일에서 생성 된 Word 문서에 서식있는 텍스트를 작성하는 방법

  15. 15

    C #의 HTM 파일에서 생성 된 Word 문서에 서식있는 텍스트를 작성하는 방법

  16. 16

    PHP에서 curl에서 생성 된 json 파일을 디코딩하는 방법

  17. 17

    하이퍼 링크가 하위 디렉터리의 HTML 파일에서도 작동하도록이 Powershell 코드를 수정하는 방법은 무엇입니까?

  18. 18

    iOS에서 Facebook 앱 링크가 지연된 링크로 작동하는 방식

  19. 19

    ASP.NET MVC에서 자동 생성 된 파일에 삽입 된 속성 특성을 유지하는 방법

  20. 20

    폴더에서 동적으로 생성 된 파일에 대해 동적으로 Symlink를 생성하는 방법

  21. 21

    Click 또는 Command가 동적으로 생성 된 MenuFlyOutItems에서 작동하도록 할 수 없습니다.

  22. 22

    의 gnuplot에서 3 열로 된 데이터 파일을 생성하는 방법

  23. 23

    JasperReports 문서에서 textField의 일부만 하이퍼 링크처럼 작동하도록 만드는 방법은 무엇입니까?

  24. 24

    React Hooks를 사용할 때 중첩 된 div에서 이벤트가 작동하지 않도록하는 방법

  25. 25

    <a> 하이퍼 링크 태그에 포함 된 HTML 태그에서 스타일을 지정하는 방법

  26. 26

    디렉토리에서 가장 최근에 생성 된 파일을 검색하는 방법

  27. 27

    C #에서 이전 무작위로 생성 된 동일한 키를 생성하는 방법

  28. 28

    사용자가 링크를 클릭하면 Outlook phpexcel을 열 때 이메일을 셀에 하이퍼 링크로 작성하는 방법은 무엇입니까?

  29. 29

    사용자가 링크를 클릭하면 Outlook phpexcel을 열 때 이메일을 셀에 하이퍼 링크로 작성하는 방법은 무엇입니까?

뜨겁다태그

보관