C# 是否可以获取鼠标悬停事件以显示ListViewControl中某项的小对话框?
[Edit]-请看下面的编辑,我想我已经弄明白了强> 我想做一个与此类似的=>但是想知道现在是否有更好的方法?我尝试过这种方法,但我的窗口似乎挂起了,我一般都有问题 我知道如何为表单控件()生成工具提示,但listView中的项似乎并不明显 对于我的特殊用法,我在ListView控件中有一个项目列表。如果在ItemMouseHover上,我能得到一个黄色的小工具提示框,用来显示与所讨论的项目相关的一些信息或一些文本,我会很高兴的 我已经创建了一个工具提示(我想),但它就是不能启动。我当然得到了这个活动,但不是工具提示。显然我做得不对。我尝试了下面的变化,但似乎都失败得很惨C# 是否可以获取鼠标悬停事件以显示ListViewControl中某项的小对话框?,c#,winforms,C#,Winforms,[Edit]-请看下面的编辑,我想我已经弄明白了 我想做一个与此类似的=>但是想知道现在是否有更好的方法?我尝试过这种方法,但我的窗口似乎挂起了,我一般都有问题 我知道如何为表单控件()生成工具提示,但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 a包含一个单独的属性,允许每个项目都有自己的工具提示。所以最后,我只需将其设置为true,并在构建它时添加项目工具提示文本。我做了同样的事情,我在表单上放置了一个带有标签控件的面板,并将面板的visible属性设为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();
希望有帮助。好的,正如前面提到的,我在ListView控件中有一个文件列表。为了在文件中得到一个潜在的峰值,我最终使用了once a kind,所以用户告诉我在我附加了一个对象(本例中是加载的文件)之后如何做,并且在加载时,我提取了前几行并将它们设置为属性 下面是一个精心设计的示例,用于从listViewItems显示工具提示: (对于那些对C#/VisualStudio非常陌生的人:您需要制作一个表单“form1”,并添加一个ListView控件“listView1”和一个按钮“button1”) 理想情况下,我希望能够通过一个“富文本框”来控制字体等,该框的行为类似于一个工具提示,但还没有找到实现这一点的理想方法 如果有更简单的方法,请告诉我
[编辑:]完成所有这些之后,我现在在SO上发现了一个类似的问题谢谢。不确定这是否正确-我喜欢工具提示,因为它会在窗口上方悬停并消失,可能在窗口之外。您知道如何检测我在哪个listViewItem上使用该listViewItem中的文本进行填充吗?
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();
}
}
}