Right to left tooltip text c#

∥☆過路亽.° 提交于 2019-12-06 03:29:40

Second try. Didn't manage to get the previous solution attempt to behave correctly. Found an alternate way by rendering the tooltip using a custom draw method.

Setup the controls:

string tip = "aaaaaa" + Environment.NewLine + "bbb";           
toolTip1.OwnerDraw = true;
toolTip1.Draw += toolTip1_Draw;
toolTip1.SetToolTip(textBox1, tip);

Handle the draw event:

private void toolTip1_Draw(object sender, DrawToolTipEventArgs e)
{
    e.Graphics.FillRectangle(SystemBrushes.Info, e.Bounds);
    e.DrawBorder();           
    e.DrawText(TextFormatFlags.RightToLeft | TextFormatFlags.Right);
}

The ToolTip control already supports this. The key is that the control for which you display the tip has a right-to-left layout. This example form demonstrates this:

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1 {
    public partial class Form1 : Form {
        ToolTip mTip = new ToolTip();
        public Form1() {
            InitializeComponent();
            this.RightToLeft = RightToLeft.Yes;
            this.RightToLeftLayout = true;
        }
        protected override void OnMouseDown(MouseEventArgs e) {
            mTip.Show("Hi\nthere", this);
        }
    }
}

If it's windows forms I guess you have to rely on the unicode control characters to mark the tooltip text as RTL.

string myToolTipText = "aaaaaa"+Environment.newLine+"bbb";
char rle_char = (char)0x202B;// RLE embedding 
control.RightToLeft = RightToLeft.Yes;
control.ToolTipText = rle_char + myToolTipText;

Check this blog for more information on authoring RTL applications.

If it's a web application you can check the w3c authoring RTL applications guidelines. Basically it comes down to the same solution as for windows forms, adding RLE chars.

Just some general thoughts to give an idea about what's going on: the tooltip class does not draw text like a multiline textbox. The whole tool-tip is considered one line without a binding rectangle, hence RTL vs LTR have no meaning (other then the order of characters within the text).

Result: using normal right-to-left or left-to-right switches either with Unicode RTL codepoints or otherwise, won't help when it comes to aligning: none is applied.

One way out is (ab)using a TextBox and place it nicely over the place of the tooltip. But others have shown prettier ways with owner-drawn tooltips, which is definitely the way to go.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!