C# 我可以在弹出窗口中画两样东西吗,一个图像和一个文本?

C# 我可以在弹出窗口中画两样东西吗,一个图像和一个文本?,c#,gridview,C#,Gridview,在C#中,我有一个表单(使用winforms),其中有一个包含数据的Gridview。当我将鼠标悬停在GridView中的单元格上时,我使用MouseEnter和MouseLeave事件弹出第二个表单,其中包含一个图像。我使用DrawImage将其与以下代码一起放置: private void frm_MouseOverPicture_Paint(object sender, PaintEventArgs e) { Point MyPoint = new Poin

在C#中,我有一个表单(使用winforms),其中有一个包含数据的Gridview。当我将鼠标悬停在GridView中的单元格上时,我使用MouseEnter和MouseLeave事件弹出第二个表单,其中包含一个图像。我使用DrawImage将其与以下代码一起放置:

    private void frm_MouseOverPicture_Paint(object sender, PaintEventArgs e)
    {
        Point MyPoint = new Point(250, 10);
        Point MySecondPoint = new Point(10,10);

        Font myFont = sender as Font;
        Brush myBrush = sender as Brush;
        Rectangle myRect = new Rectangle(250, 10, 500, 500);

        Graphics g = e.Graphics;
        Graphics g2 = e.Graphics;
        Bitmap MyBitmap = new Bitmap(@"C:\Javie\IMAP0001.jpeg");


        //g.DrawImage(MyBitmap, MyPoint.X, MyPoint.Y);
        g.DrawImageUnscaledAndClipped(MyBitmap, myRect);
        //g.DrawString("Hi", myFont, myBrush, MySecondPoint);
        e.Graphics.DrawString("hi", myFont, myBrush, mySecondPoint);          

    }

我的问题是,当我尝试然后使用单独的DrawString方法添加字符串时,弹出表单中会出现一个大的红色X,好像我不能在同一表单中绘制两个东西(这只是一个控件,对吗?)。

myFont和myBrush对象看起来不正确。尝试:

        Font myFont = (sender as Form).Font;
        Brush myBrush = new SolidBrush((sender as Form).ForeColor);
        ...
        e.Graphics.DrawString("hi", myFont, myBrush, MySecondPoint);
假设发件人是表单,或直接创建它们:

        using (Font myFont = new Font("Arial", 16))
        {
            using (Brush myBrush = new SolidBrush(Color.Blue))
            {
                using ( Bitmap MyBitmap = new Bitmap(@"C:\Javie\IMAP0001.jpeg")) 
                {
                    ...
                    g.DrawString("hi", myFont, myBrush, MySecondPoint);
                }
            }
        }

这并不能解决您的主要问题,但如果您不处理位图,最终将导致内存泄漏。使用语句将其包装在
中,或者(更好的做法是)在加载时将位图加载到本地字段中,这样您就不必在每次绘制表单时都从文件中加载它。不要调用
DataGridView
a
GridView
!!这是错误的,令人困惑的,肯定会得到错误的答案,浪费大家的时间。。总是用正确的名字来称呼事物!是的,要多打四个字母,但是在这里寻求帮助的时候可不是那么懒的时候-如果使用第二个选项,请确保在使用完
字体和
画笔后,最好通过
using
语句处理它们。如果不这样做,您将经历内存泄漏。