winform判断一个窗口是否打开并显示出来

判断一个窗口是否打开,和显示当前窗口:

form1中声明:private Form2 f2;

在需要弹出窗口的处理上做如下修正:

 

完成代码如下:

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 好的,以下是一段C#代码示例,可以在WinForm窗体的Load事件中添加,以在窗口重新打开显示之前的绘图: ``` private List<Point> points = new List<Point>(); //存储绘图点坐标的列表 private void Form1_Load(object sender, EventArgs e) { //在窗口打开后重新绘制之前的图形 this.Refresh(); foreach (Point p in points) { //绘制每个点 Graphics g = this.CreateGraphics(); g.FillEllipse(Brushes.Black, p.X, p.Y, 5, 5); g.Dispose(); } } private void Form1_Paint(object sender, PaintEventArgs e) { //绘制当前的图形 foreach (Point p in points) { e.Graphics.FillEllipse(Brushes.Black, p.X, p.Y, 5, 5); } } private void Form1_MouseDown(object sender, MouseEventArgs e) { //将鼠标点击位置加入到点列表中 points.Add(new Point(e.X, e.Y)); //重新绘制窗口 this.Invalidate(); } ``` 这段代码利用一个点列表存储所有的绘图点坐标,并在窗口重新打开时重绘之前的图形。当用户在窗口中点击鼠标时,新的点将被添加到列表中,并且窗口将被重新绘制以显示新的和之前的点。 ### 回答2: 编写一个实现上述功能的示例代码如下: 1. 首先,在WinForm窗口类中添加一个成员变量用于保存之前绘制的图形对象,例如`private Graphics previousGraphics;`。 2. 在窗口加载时,将当前绘图保存到`previousGraphics`中。可以在窗口的`Load`事件处理程序中实现,如下所示: ```csharp private void Form1_Load(object sender, EventArgs e) { previousGraphics = this.CreateGraphics(); // 在这里进行之前的绘图操作,例如: // previousGraphics.DrawLine(Pens.Red, new Point(0, 0), new Point(100, 100)); // previousGraphics.DrawEllipse(Pens.Blue, new Rectangle(200, 200, 100, 100)); } ``` 3. 当窗口重新打开时,再次绘制之前的图形。可以在窗口的`Paint`事件处理程序中实现,如下所示: ```csharp private void Form1_Paint(object sender, PaintEventArgs e) { // 在这里重新绘制之前的图形 if (previousGraphics != null) { e.Graphics.DrawImage(previousGraphics, 0, 0); } } ``` 这样,当窗口重新打开时,之前绘制的图形就会显示窗口中。您可以根据实际需求在`Load`事件处理程序中进行之前的绘图操作,然后在`Paint`事件处理程序中重新绘制图形。 ### 回答3: 要实现让WinForm窗口重新打开显示之前的绘图,可以使用以下步骤: 1. 在WinForm窗口的代码中添加一个PictureBox控件,用于显示绘图。 2. 在窗口的Load事件中,加载之前保存的绘图数据。可以将绘图数据保存在文件中,或者在程序中使用变量保存。 3. 在加载绘图数据之前,先清空PictureBox控件中的内容,以确保之前的绘图已经清除。 4. 通过绘图数据,重新绘制在PictureBox控件中。 以下是示例代码: ```csharp using System; using System.Drawing; using System.Windows.Forms; namespace WinFormApp { public partial class MainForm : Form { // 保存绘图数据 private Bitmap previousDrawing; public MainForm() { InitializeComponent(); } private void MainForm_Load(object sender, EventArgs e) { // 加载之前保存的绘图数据 LoadPreviousDrawing(); } private void LoadPreviousDrawing() { // 清空PictureBox控件中的内容 pictureBox.Image = null; // 判断是否存在之前的绘图数据 if (previousDrawing != null) { // 将之前保存的绘图数据绘制到PictureBox控件中 pictureBox.Image = previousDrawing; } } private void SaveCurrentDrawing() { // 获取当前绘图,并保存到previousDrawing变量中 previousDrawing = new Bitmap(pictureBox.ClientSize.Width, pictureBox.ClientSize.Height); using (Graphics graphics = Graphics.FromImage(previousDrawing)) { graphics.Clear(Color.White); // 清空绘图 // 在此处添加绘图逻辑,绘制到graphics中 } } private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { // 保存当前绘图数据 SaveCurrentDrawing(); // 可以将previousDrawing保存到文件中,以便下次加载 } } } ``` 以上代码中,当窗口加载后,会自动加载之前保存的绘图数据,并将其绘制到PictureBox控件中。在窗口关闭时,会保存当前的绘图数据,以便下次打开时加载。为了简化示例,绘图的逻辑未在代码中提供,需要根据具体需求自行添加。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值