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。