2012-06-02 35 views
4

我有一个带有图片框的表单并且图片框有工具提示。问题是当表单加载和鼠标在图像上,表单不会绘制 - 查看图像。当鼠标离开picturebox时,一切都很好。如果鼠标位于具有工具提示的图像上,C#.Net窗体将不会绘制

Form1.cs的

using System; 
using System.Windows.Forms; 

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

     private void pictureBox1_MouseMove(object sender, MouseEventArgs e) 
     { 
      if(toolTip1.Active) 
      toolTip1.Show(e.X + " " + e.Y, this, e.X, e.Y); 
     } 

     private void pictureBox1_MouseLeave(object sender, EventArgs e) 
     { 
      toolTip1.Hide(this); 
     } 
    } 
} 

Form1.designer.cs

namespace testTooltip 
{ 
    partial class Form1 
    { 
     /// <summary> 
     /// Required designer variable. 
     /// </summary> 
     private System.ComponentModel.IContainer components = null; 

     /// <summary> 
     /// Clean up any resources being used. 
     /// </summary> 
     /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> 
     protected override void Dispose(bool disposing) 
     { 
      if (disposing && (components != null)) 
      { 
       components.Dispose(); 
      } 
      base.Dispose(disposing); 
     } 

     #region Windows Form Designer generated code 

     /// <summary> 
     /// Required method for Designer support - do not modify 
     /// the contents of this method with the code editor. 
     /// </summary> 
     private void InitializeComponent() 
     { 
      this.components = new System.ComponentModel.Container(); 
      this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); 
      this.pictureBox1 = new System.Windows.Forms.PictureBox(); 
      ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); 
      this.SuspendLayout(); 
      // 
      // toolTip1 
      // 
      this.toolTip1.AutomaticDelay = 5000; 
      this.toolTip1.OwnerDraw = true; 
      this.toolTip1.ToolTipTitle = "Test"; 
      // 
      // pictureBox1 
      // 
      this.pictureBox1.Image = global::testTooltip.Properties.Resources.screen000; 
      this.pictureBox1.Location = new System.Drawing.Point(29, 12); 
      this.pictureBox1.Name = "pictureBox1"; 
      this.pictureBox1.Size = new System.Drawing.Size(678, 429); 
      this.pictureBox1.TabIndex = 0; 
      this.pictureBox1.TabStop = false; 
      this.pictureBox1.MouseLeave += new System.EventHandler(this.pictureBox1_MouseLeave); 
      this.pictureBox1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove); 
      // 
      // Form1 
      // 
      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
      this.ClientSize = new System.Drawing.Size(730, 457); 
      this.Controls.Add(this.pictureBox1); 
      this.DoubleBuffered = true; 
      this.Name = "Form1"; 
      this.Text = "Form1"; 
      ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); 
      this.ResumeLayout(false); 

     } 

     #endregion 

     private System.Windows.Forms.ToolTip toolTip1; 
     private System.Windows.Forms.PictureBox pictureBox1; 
    } 
} 

这里是预览 http://www.bildites.lv/images/1iftt7hxbqloz0vw949.png ,这是当鼠标离开PictureBox的 http://www.bildites.lv/images/tp47375fpl6q3oguh6e.png

+1

您是否在没有提示的情况下尝试过,看看是否导致问题? –

+0

明显的一个明显错误:将工具提示的OwnerDraw属性重新设置为False。或者实际执行Draw事件。 –

+0

没有工具提示它工作正常,但我需要该工具提示并将OwnerDraw属性设置为False不修复任何内容,它只会使工具提示闪烁 – user1432667

回答

1

我建议你尝试只用Label控制而不是ToolTip

+0

尝试使用标签 - label1.Location = pictureBox1.PointToScreen(e.Location);工作正常,但它远离鼠标位置,并且每次都随机选择 label1.Location = e.Location;与工具提示相同的问题 – user1432667

+1

假设我的标签名为lblTooltip并在您的事件处理程序中:'lblTooltip.Location = new Point(e.X,e.Y); lblTooltip.Text = eX +“”+ eY;' –

+0

确定这一个工作正常,谢谢 – user1432667

相关问题