如何将鼠标悬停在工具提示上时设置显示的默认光标?我已经创建了一个自定义ToolTip类来调整颜色/字体,所以如果有必要,我可以在那里进行更改。
工具提示从窗体中的面板显示。面板的cursor属性设置为Cursors.Hand,我希望ToolTip匹配。我已经尝试在面板的MouseEnter事件中更改表单级别的光标,但它只是半功能的。它会在Cursors.Default和Cursors.Hand之间快速切换。当我在工具提示上移动光标时(好像提示正在强制使用默认光标)。
非常感谢任何帮助。
在iconPanel的MouseEnter上:
Cursor = Cursors.Hand;
if(!showingTip) {
showingTip = true;
changeIconTip.Show("Choose image...", iconPanel, 2, 2, 4000);
}
在iconPanel的MouseLeave上:
Rectangle iconPanelArea = new Rectangle(iconPanel.PointToScreen(new Point(0, 0)), iconPanel.Size);
Point c = Cursor.Position;
if(!iconPanelArea.Contains(c)) {
showingTip = false;
changeIconTip.Hide(iconPanel);
Cursor = Cursors.Default;
}
注意:在MouseLeave上,当光标悬停在工具提示上时,技术上它会“离开”iconPanel(即使它仍然在面板的边界内)。包含检查仅在光标离开面板时将光标设置回默认值。
答案 0 :(得分:0)
我无法交替重现光标。在Windows 8.1上,当鼠标悬停在工具提示上时,光标会保持不变。试试这段代码:
public class Form3 : Form {
Panel iconPanel = new Panel() { BackColor = Color.RosyBrown, Size = new Size(200, 200) };
ToolTip changeIconTip = new ToolTip();
bool showingTip = false;
public Form3() {
Controls.Add(iconPanel);
iconPanel.MouseEnter += iconPanel_MouseEnter;
iconPanel.MouseLeave += iconPanel_MouseLeave;
}
void iconPanel_MouseLeave(object sender, EventArgs e) {
Rectangle iconPanelArea = new Rectangle(iconPanel.PointToScreen(new Point(0, 0)), iconPanel.Size);
Point c = Cursor.Position;
if (!iconPanelArea.Contains(c)) {
showingTip = false;
changeIconTip.Hide(iconPanel);
Cursor = Cursors.Default;
}
}
void iconPanel_MouseEnter(object sender, EventArgs e) {
Cursor = Cursors.Hand;
if (!showingTip) {
showingTip = true;
changeIconTip.Show("Choose image...", iconPanel, 2, 2, 4000);
}
}
}