2011-08-20 33 views
5

Khi thêm một ToolStripMenuItem vào một biểu mẫu và thiết lập RightToLeft thành true và có một trích dẫn ở cuối văn bản, nó sẽ đặt dấu trích dẫn ở phía trước của văn bản?Tại sao điều này lại xảy ra với ToolStripMenuItems?

ToolStripMenuItem1.Text = "Name \"Text\""; 
ToolStripMenuItem1.RightToLeft = System.Windows.Forms.RightToLeft.Yes; 

Hiển thị dưới dạng; "Tên" Văn bản

Chỉnh sửa: Điều này cũng xảy ra với các dấu nháy đơn.

+0

+1 đẹp nhất:) ... – Tigran

+0

Tôi có làm gì sai hoặc bạn có nghĩ đây là lỗi không? – ManicResin

+0

nếu nó hiển thị hiệu chỉnh với righttoleft = false (mặc định) nhưng không phải khi bạn thay đổi hướng, sau đó tôi sẽ nói đó là lỗi – Thundersquirrel

Trả lời

0

EDIT:
NẾU bạn chỉ muốn thay đổi chữ Alignment sau đó luôn là ToolStripItem.Alignment hoặc ToolStripItem.Padding thử ...

Các tính năng mà bạn đang sử dụng có nghĩa là cho nội địa hóa và có thể hỗ trợ nội dung hỗn hợp .. Cách bạn sử dụng tính năng đó có vẻ giống như một sự lạm dụng ... vì Windows cần phải có ý nghĩa về "nội dung hỗn hợp" mà bạn cung cấp cực đoan (không có tiếng ả rập).

tôi thấy nó luôn luôn chăm chỉ để chắc chắn rằng hành vi như vậy mặc dù bất ngờ và unintuitive thực sự là một lỗi ...

Rendering logic cho BiDi văn bản là khá phức tạp - ví dụ như khi bạn có một dấu chấm than ở đâu đó trong văn bản mà phải được trả lại RightToLeft nó có thể dẫn đến đảo chiều tùy thuộc vào việc thực hiện ...

Đối với một số cái nhìn sâu sắc thấy http://www.unicode.org/reports/tr9/

Như có vẻ như .NET là không hoàn toàn phù hợp với các thuật toán Unicode BiDi ... thậm chí có cả thư viện cố gắng im plement nó thấy http://sourceforge.net/projects/nbidi/

+0

Cảm ơn bạn đã chỉnh sửa nhiều hơn về hướng tôi đang đứng đầu. Tôi đang thực sự tìm kiếm một cách để có được các mục trình đơn để hiển thị từ hướng ngược lại. – ManicResin

4

Bằng cách đặt RightToLeft thành Có, bạn đang yêu cầu công cụ hiển thị văn bản Windows áp dụng các quy tắc bố cục văn bản được sử dụng bằng ngôn ngữ sử dụng thứ tự từ phải sang trái. Tiếng Ả Rập và tiếng Do Thái. Những quy tắc này khá tinh tế, đặc biệt là vì các cụm từ tiếng Anh trong những ngôn ngữ đó không phải là hiếm. Nó sẽ không hiển thị "txeT emaN" như nó thường làm với các từ tiếng Ả Rập hoặc tiếng Do Thái, điều đó không có ý nghĩa với bất kỳ ai. Nó cần phải xác định câu hoặc cụm từ và đảo ngược những câu đó. Báo giá là đặc biệt, họ phân định một cụm từ.

Ngắn câu chuyện ngắn, bạn đang sử dụng tính năng để căn chỉnh thực sự có nghĩa là thực hiện điều gì đó liên quan nhiều hơn. Không sử dụng nó cho điều đó.

+1

Cũng lưu ý một chút về thiết kế API chính. Nó không phải là một thuộc tính bool, bạn không đặt nó thành true. Nó là một enum với chỉ có hai giá trị pháp lý, Có và Không chỉ ra: hey, đây không chỉ là một lựa chọn đơn giản. Tuyệt vời. –

+0

Điều đó có thể xảy ra với hầu hết các ký tự dấu câu và các ký hiệu khác. Vì vậy, nếu đây là nguyên nhân làm thế nào sẽ hiển thị đúng cách điều khiển biểu mẫu này để xuất hiện từ phải sang trái mà không gây ra điều này? EDIT: Tôi đã sửa lỗi trong mã câu hỏi của mình. – ManicResin

+1

Có, dấu chấm câu cũng phân định các cụm từ.Hãy thử đọc lại câu trả lời và chọn một phần không rõ ràng với bạn, tôi không hiểu tại sao bạn đăng nhận xét đó. Bản chất của câu trả lời là RightToLeft có nghĩa là để làm một cái gì đó * hoàn toàn * khác với những gì bạn muốn sử dụng nó cho. Căn chỉnh văn bản chỉ là một tác dụng phụ nhỏ của nó. –

Các vấn đề liên quan