1

箇条書きの書式設定を適用することができましたが、それを再度削除するにはどうすればよいですか? 選択範囲に含まれているかどうかを検出する方法はList? 私は物事を過度に複雑にしましたか?選択範囲を箇条書きリストに変換して元に戻す簡単な方法はありますか?

 Private Sub bullet(o As Windows.Forms.ContextMenuStrip, e As Windows.Forms.ToolStripItemClickedEventArgs)
    Dim lst As New Windows.Documents.List()
    lst.MarkerStyle = bullets(e.ClickedItem.Text)
    If rtf.Selection.IsEmpty Then
        lst.ListItems.Add(New Windows.Documents.ListItem())
    Else
        Dim li As Windows.Documents.ListItem
        Dim lines() As String = rtf.Selection.Text.Split(vbCrLf)
        For Each s As String In lines
            li = New Windows.Documents.ListItem()
            li.Blocks.Add(New Windows.Documents.Paragraph(New Windows.Documents.Run(s.Trim())))
            lst.ListItems.Add(li)
        Next
        rtf.Selection.Text = ""
    End If
    Dim curCaret = rtf.CaretPosition
    Dim curBlock = rtf.Document.Blocks.Where(Function(x) x.ContentStart.CompareTo(curCaret) = -1 AndAlso x.ContentEnd.CompareTo(curCaret) = 1).FirstOrDefault()
    rtf.Document.Blocks.InsertAfter(curBlock, lst)
    Dim vMove As Windows.Documents.TextPointer = Nothing

    vMove = curCaret.GetNextInsertionPosition(Windows.Documents.LogicalDirection.Forward)
    If vMove IsNot Nothing Then rtf.CaretPosition = vMove

    rtf.Focus()
End Sub

特定の状況では信頼できないため、このコードをプロジェクトから削除するようになりました。動的 XAML 挿入に基づくソリューションはより信頼性が高くなりますか? WPFの多くの側面は、非常に不十分に考えられているようです....

4

2 に答える 2

0

Windows フォーム バージョンの richtextbox を使用できる場合は、SelectionBulletプロパティを使用できます。

http://msdn.microsoft.com/en-us/library/ms742875.aspx

于 2013-10-28T14:52:00.863 に答える