winforms 我可以获取MouseOver事件来显示ListViewControl中某项的小对话框吗?

bxpogfeg  于 2023-08-07  发布在  SEO
关注(0)|答案(2)|浏览(210)

[编辑] -请参阅下面的编辑,我想我已经弄清楚了!

我想做一个类似的事情,这=> How to make a floating (tooltip) control in 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 Property所以最后,我只需要将其设置为true,并在构建它时添加items工具提示文本。

bnl4lu3b

bnl4lu3b1#

我做了同样的事情,我把一个面板与标签控制的形式和假的可见属性面板,然后在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();

字符串
希望对你有帮助。

pkbketx9

pkbketx92#

好的,如前所述,我在ListView控件中有一个文件列表。为了了解文件中的内容,我最终使用了ListViewItem.Tag Propterty,有一次一个用户告诉我如何使用(from another of my questions)。一旦我附加了一个对象(在本例中是加载的文件),在加载时,我提取了前几行并将其设置为ListViewItem.ToolTipText属性。
下面是一个人为的例子,可以从listViewItems中显示工具提示:(对于那些对C#/VisualStudio非常陌生的人:您需要创建一个表单“form 1”,并添加一个ListView控件“listView 1”和一个按钮“button 1”)。

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();
            }
        }
    }

字符串
理想情况下,我希望能够通过一个“富文本框”来控制字体等,它的行为就像一个工具提示,但还没有找到理想的方法来做到这一点。
让我知道如果有一个更简单的方法!!!
[EDIT:]做完这一切后,我现在在SO How to set tooltip for a ListviewItem上发现了一个类似的问题

相关问题