C# 如何导航到windows生成的控件?

C# 如何导航到windows生成的控件?,c#,winforms,drawstring,C#,Winforms,Drawstring,我有这个密码 private void picturebox1_Paint(object sender, PaintEventArgs e) { if (Percent == 100) { e.Graphics.DrawString("Completed!", font, Brushes.Black, new Point(3, 2)); } } 我想从这里导航: public void Complete()

我有这个密码

private void picturebox1_Paint(object sender, PaintEventArgs e)
    {
        if (Percent == 100)
        {
            e.Graphics.DrawString("Completed!", font, Brushes.Black, new Point(3, 2));
        }
    }
我想从这里导航:

public void Complete()
{
    picRooms_Paint();//How can I reach picRooms_Paint from here and draw the string?
}

任何帮助都将不胜感激

从您的示例中不清楚什么是
picRooms
,因此我无法告诉您如何从其他地方访问其图形

虽然作为一般API的改进,最好将函数代码从事件处理程序移到一个可以重用的方法中

private void DrawComplete(Graphics g)
{
    if (Percent == 100)
    {
        g.DrawString("Completed!", font, Brushes.Black, new Point(3, 2));
    }
}
现在你可以在任何地方调用这个方法

private void picRooms_Paint(object sender, PaintEventArgs e)
{
    DrawComplete(e.Graphics)
}

public void Complete()
{
    DrawComplete(this.CreateGraphics());
}

同样值得一提的是,在您的示例中,既然
Complete
不做任何其他事情,您也可以按照这个示例,但将函数代码放在
Complete
中,而不是像我这样添加另一个方法。

为什么不改为设置
文本
?除非您想要某种自定义绘制的字符串。顺便问一下,你的
picRooms
是什么?pictureBox?您可能要做的是使Picroom无效,以便启动绘制事件。我认为这有点像picRooms.Invalidate();这些方法是如何实现的?他们在同一个班吗?此外,您的方法调用
picRooms\u Paint()
在上述示例中不起作用。最初,您向它传递了两个重载
对象发送方PaintEventArgs e
,在第二个方法中没有遵循相同的模式。我有一个特定的字体没有预先安装在C#上。是的,这是一个图片盒。它们都在表格1中。我的代码可以找到惊人的想法,然后我就可以加载到picturebox的图形!非常感谢!我想你会发现,当你进入它时,这是更复杂的;当窗体被绘制时,PictureBox可能只是重新绘制自己,这取决于您正在进行的其他代码。是的,我在将图形加载到PictureBox时遇到了问题。如果可能的话,我希望它继续尝试,直到百分比达到100。