2012-10-23 309 views
1

可能重複:
create custom tooltip C#製作文本彈出鼠標懸停

有誰知道的一種方法,使一箱「彈出」時,在用戶的遊標某些項目?

例如,我想有一個C#窗體應用程序一個PictureBox若超過它的用戶光標,文本框會彈出。

我所知道的ToolTip但是我想的更多的東西可定製;在我的腦海,我想你在魔獸世界中看到,當你光標移到某個項目在您的庫存那種彈出對話框中(很明顯這並不一定是華而不實的,但至少有一個在文本顏色,背景顏色,文字等都是可以修改的)。

+0

你可以用另一種形式來做到這一點,使用鼠標在輸入/輸出操作的顯示/隱藏 – Prix

回答

0

我的意思是,如果一個按鈕或圖像按鈕,你可以添加類似MouseHover動作,然後顯示您的消息

private void button1_MouseHover(object sender, System.EventArgs e) 
{ 
MessageBox.Show("yourmessage"); 

} 
3

可以使用ToolStripControlHost主辦的控制(例如面板),並添加你想要的內容。然後使用Items集合將該控件添加到ToolStripDropDown,並使用Show(Control,Point)方法顯示該控件。


思想我想補充一個例子

public class Form1 { 
    public Form1() { 
     ToolStripDropDown customToolTip = new ToolStripDropDown(); 
     customToolTip.Items.Add(new CustomPopupControl("Hello", "world")); 
     MouseMove += (o, e) => { 
      Point location = e.Location; 
      location.Offset(0, 16); 
      customToolTip.Show(this, location); 
     }; 
    } 

    class CustomPopupControl : ToolStripControlHost { 
     public CustomPopupControl(string title, string message) 
      : base(new Panel()) { 
      Label titleLabel = new Label(); 
      titleLabel.BackColor = SystemColors.Control; 
      titleLabel.Text = title; 
      titleLabel.Dock = DockStyle.Top; 

      Label messageLabel = new Label(); 
      messageLabel.BackColor = SystemColors.ControlLightLight; 
      messageLabel.Text = message; 
      messageLabel.Dock = DockStyle.Fill; 

      Control.MinimumSize = new Size(90, 64); 
      Control.Controls.Add(messageLabel); 
      Control.Controls.Add(titleLabel); 
     } 
    } 
}