2

[編集] - 以下の編集を参照してください。

これと同様のことをしたい => Windows.Forms でフローティング (ツールチップ) コントロールを作成するには? しかし、今より良い方法があるかどうか疑問に思っていましたか? 私はこのアプローチを試しましたが、私のウィンドウがぶらぶらしているようで、一般的に問題があります。

フォーム コントロール ( here ) のツールチップを作成する方法は知っていますが、listView の項目は明らかではないようです。

私の特定の使用法では、ListView コントロールに項目のリストがあります。ItemMouseHoverで、問題のアイテムに関連する情報やテキストを表示するために使用される小さな黄色のツールチップ ボックスを取得できれば幸いです。

ツールチップを作成しましたが (だと思います)、起動しません。私は確かにイベントを取得していますが、ツールヒントは取得していません。明らかに、私はこれを正しく行っていません。以下のバリエーションを試しましたが、すべてが惨めに失敗するようです。

private void ShowLittleBox(object sender, ListViewItemMouseHoverEventArgs e)
{
    toolTip1 = new ToolTip
    {ToolTipTitle = "File Summary",AutomaticDelay = 10,BackColor = Color.Yellow};
    RichTextBox rtb = new RichTextBox //I needed some window - I used a lot of them
    {AutoSize = true,Visible = true,Text="Please note, only first 5 lines are shown"};

    string myTextDerivedFromObject = "Eventually this will be dynamic ... ";
    toolTip1.Show(myTextDerivedFromObject,rtb); //Also tried activewindow, my listview control etc.

}

言うまでもなく、私はこの「スイングセット」を約 4 時間ギブまたはテイクしており、少しプッシュする必要があります...

[編集]:私はそれをクラックしたと思います-ListViewには、各アイテムに独自のツールチップを持たせるための個別のプロパティが含まれていることがわかりました。ListViewItem.ToolTipText プロパティ したがって、最終的には、これを true に設定し、ビルド時に項目のツールヒント テキストを追加するだけで済みました。

4

2 に答える 2

1

私はこのように同じことをしました.フォームにラベルコントロールを持つパネルを配置し、パネルの可視プロパティをfalseにしてから、任意のオブジェクトのmouseEnterイベントでX、Y位置を取得し、その位置にパネルを表示します.

Point locationOnForm = AnyObject.FindForm().PointToClient(AnyObject.Parent.PointToScreen(AnyObject.Location));
lblQue.Text = "Text to be shown";
panel8.Location = new Point(locationOnForm.X, locationOnForm.Y+27);
panel8.Size = new Size(470, 30);
panel8.BackColor = Color.SkyBlue;
this.Controls.Add(panel8);
panel8.BringToFront();
panel8.Show();

それが役に立てば幸い。

于 2013-04-20T06:33:57.277 に答える
0

さて、前述のように、ListView コントロールにファイルのリストがありました。ファイルの内容をこっそり見るために、親切なSOユーザーが(私の別の質問から)その方法を教えてくれたときにListViewItem.Tagプロパティを使用することになりました。オブジェクトを添付したら(ロードされたファイルこの場合)、読み込み中に最初の数行を抽出し、それらをListViewItem.ToolTipTextプロパティに設定しました。

ツールチップを listViewItems から表示できるようにするための不自然な例を次に示します。ボタン "button1")。

     namespace SneakPeak
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void Form1_Load(object sender, EventArgs e)
            {
                listView1.ShowItemToolTips = true;

                ListViewItem ItemA = new ListViewItem("my item A");
                myObject ObjectA = new myObject("the description for A");
                ItemA.Tag = ObjectA;
                ItemA.ToolTipText = ((myObject) (ItemA.Tag)).ToString();

                ListViewItem ItemB = new ListViewItem("my item B"); 
                myObject ObjectB = new myObject("the description for B");
                ItemB.Tag = ObjectB;
                ItemB.ToolTipText = ((myObject)(ItemB.Tag)).ToString();

                ListViewItem ItemC = new ListViewItem("my item C"); 
                myObject ObjectC = new myObject("the description for C");
                ItemC.Tag = ObjectC;
                ItemC.ToolTipText = ((myObject)(ItemC.Tag)).ToString();

                ListViewItem ItemD = new ListViewItem("my item D");
                myObject ObjectD = new myObject("the last of the descriptions - description for D that goes off the side of the window");
                ItemD.Tag = ObjectD;
                ItemD.ToolTipText = ((myObject)(ItemD.Tag)).ToString();

                listView1.Items.Add(ItemA);
                listView1.Items.Add(ItemB);
                listView1.Items.Add(ItemC);
                listView1.Items.Add(ItemD);

            }

            public class myObject
            {
                public string filePreview = "";
                public override string ToString()
                {
                    return filePreview;
                }
                public myObject(string s)
                {
                    filePreview = s;
                }
            }

            private void button1_Click(object sender, EventArgs e)
            {
                Close();
            }
        }
    }

理想的には、ツール ヒントのように動作する「リッチ テキスト ボックス」を介してフォントなどを制御できるようにしたいと考えていますが、それを行う理想的な方法はまだ見つかりません。

もっと簡単な方法があれば教えてください!!!

[編集:]これをすべて行った後、SO ListviewItemのツールチップを設定する方法で同様の質問を見つけました

于 2013-04-21T21:56:43.417 に答える