2009-09-02 37 views
18

Có ai biết cách tôi có thể vô hiệu hóa gói văn bản của RichTextBox không? Ví dụ: nếu tôi có một chuỗi lớn không vừa trong cửa sổ, thì RichTextBox sẽ đặt một phần của chuỗi không thể hiển thị dòng mới. Tôi muốn tắt tính năng đó (và chỉ hiển thị bằng cách sử dụng Scrollbar).C#/WPF: Tắt Text-Wrap của RichTextBox

Cảm ơn rất nhiều.

Cheers

Trả lời

27

Một RichTextBox trong WPF chỉ đơn giản là một biên tập viên cho một FlowDocument.
Theo MSDN:

chữ luôn luôn kết thúc tốt đẹp trong một RichTextBox. Nếu bạn không muốn văn bản để bọc sau đó thiết lập các PageWidth trên FlowDocument để được lớn hơn chiều rộng của RichTextBox. Tuy nhiên, khi trang chiều rộng đạt đến văn bản vẫn kết thúc tốt đẹp.

Vì vậy, trong khi không có cách nào để bạn có thể vô hiệu hóa một cách rõ ràng word-gói của một RichTextBox, bạn có thể làm một cái gì đó như thế này:

richTextBox1.HorizontalScrollBarVisibility = ScrollBarVisibility.Visible; 
richTextBox1.Document.PageWidth = 1000; 

Mà sẽ có cơ bản hiệu quả mong muốn cùng cho đến khi bạn có một dòng vượt quá PageWidth.

Lưu ý (tính đến tháng 7 năm 2015): VS2015 RC cho phép wordwrap = false hoạt động chính xác như OP có vẻ như mong muốn. Tôi tin rằng phiên bản trước của Visual Studio cũng đã làm.

+0

Cảm ơn bạn! Làm việc như một quyến rũ –

+6

Tôi không thích giải pháp bởi vì sau đó Scroolbar ngang có thể nhìn thấy tất cả các thời gian ... – Elisabeth

+0

nó sẽ được tốt đẹp nếu bạn có thể thiết lập rằng khi phát hiện (bằng cách nào đó) mà gói là cần thiết (ví dụ như kiểm tra từng "chạy" [đoạn] chiều rộng hoặc một cái gì đó) và biến nó trở lại khi không cần thiết (giám sát thay đổi văn bản để kiểm tra mọi lúc, mặc dù nó có thể chậm) –

0

Tôi cũng cần hiển thị một chuỗi lớn và thử RichTextBox nhưng tôi không thích giải pháp bằng cách đặt PageWidth của Tài liệu thành kích thước cố định. Thanh cuộn sẽ hiển thị mọi lúc và vùng di chuyển lớn.

Nếu một TextBlock đủ, bạn có thể sử dụng nó thay vào đó và đặt nó bên trong một ScrollViewer. Nó làm việc hoàn hảo cho tôi vì tôi không cần tất cả các tính năng bổ sung của RichTextBox.

<ScrollViewer Width="200" 
       Height="100" 
       HorizontalScrollBarVisibility="Auto" 
       VerticalScrollBarVisibility="Auto"> 
        <TextBlock TextWrapping="NoWrap"> 
         <TextBlock.Text> 
          Very long text Very long text Very long text 
         </TextBlock.Text> 
        </TextBlock> 
</ScrollViewer> 
+0

một TextBlock không thể chỉnh sửa, cộng với tôi không nghĩ rằng nó hỗ trợ định dạng phong phú –

+1

@GeorgeBirbilis TextBlock không thể chỉnh sửa được nhưng nó hỗ trợ định dạng phong phú bằng cách sử dụng các thẻ định dạng lồng nhau. In đậm, Siêu liên kết, v.v. – SepehrM

1

Nếu bạn không muốn hiển thị thanh cuộn ngang, thực thi một MinWidth trên ScrollViewer:

<RichTextBox ScrollViewer.HorizontalScrollBarVisibility="Hidden"> 

    <RichTextBox.Resources> 
     <Style TargetType="ScrollViewer"> 
      <Setter Property="MinWidth" Value="2000" /> 
     </Style> 
    </RichTextBox.Resources> 

</RichTextBox> 
Các vấn đề liên quan