2

現在ロードされているドキュメントのファイル名を示すさまざまなキャプションを持ついくつかの子フォームを含むMDIフォームがあります。子フォームが最大化されると、タイトルテキストが親ウィンドウのタイトルバーに配置されるため、テキストが長すぎてバーに収まらないことがよくあります。Windowsは、省略記号を追加してテキストを切り捨てるのに十分です。

ただし、メインウィンドウのタイトルバーにカーソルを合わせると、文字列全体のツールチップが表示されますが、ツールチップには文字列のごく一部が含まれていることがよくあります。たとえば、メインフォームのテキストが次の場合:

Program1-ファイル名:[Really_long_filename_that_doesnt_fit.file]

ツールチップでは次のように表示されます。

プログラム1-ファイル名:[Really_long_filename_t

編集:ツールチップは常に正確に100文字で切り捨てられます。これにより、どこかで指定された上限であると私は信じます。

文字列全体を表示するようにこれを変更する方法はありますか?そうでない場合は、ツールチップを完全に無効にする方法はありますか?

これはC#で行っていますが、どの言語でもかまいません。

4

2 に答える 2

4

これは、手動のツールチップとタイマーを使用して、マウスがタイトルバー上を移動したときにキャプションを表示/非表示にします。

public partial class Form1 : Form
{
    private ToolTip toolTip = new ToolTip();
    private Timer toolTipTimer = new Timer();
    private bool canShowToolTip = true;

    protected override void WndProc(ref Message m)
    {
        switch (m.Msg)
        {
            case 0x2A0: // WM_NCMOUSEHOVER
                return;
            case (int)0x00A0: // WM_NCMOUSEMOVE
                if (m.WParam == new IntPtr(0x0002)) // HT_CAPTION
                {
                    if (canShowToolTip)
                    {
                        canShowToolTip = false;
                        toolTip.Show(this.Text, this, this.PointToClient(Cursor.Position), toolTip.AutoPopDelay);
                        toolTipTimer.Start();
                    }
                }
                return;
        }
        base.WndProc(ref m);
    }

    public Form1()
    {
        InitializeComponent();
        Form child = new Form();
        child.Text = "Program1 - Filename:[Really_long_filename_that_doesnt_fit.file] AAAAAAAAAAAAAAAAAAAA BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB";
        child.MdiParent = this;
        child.Show();
        toolTip.AutoPopDelay = 5000;
        toolTipTimer.Interval = toolTip.AutoPopDelay;
        toolTipTimer.Tick += delegate(object sender, EventArgs e)
        {
            canShowToolTip = true;
        };
    }
}
于 2009-06-19T17:24:00.820 に答える
0

もっとお役に立てればと思いますが、残念ながら、これを回避する方法はないと思います。あなたはあなたのファイル名を短くするか、それに対処しなければならないかもしれません:(

于 2009-06-19T17:06:38.767 に答える