C# 如何在pannel控件中加载子窗口(form)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 如何在pannel控件中加载子窗口(form)相关的知识,希望对你有一定的参考价值。

我有一个FormA,FormA中有一个控件pannel1,和l两个Button控件Button1和Button2。还有一个FormB,FormB中有一个控件DataGridView。我想点击Button1控件使FormA中的pannel1加载FormB的实例,然后点击Button2,使前面加载的FormB的实例独立出来成为单独的Form窗口。
这个问题我考虑了一个下午,苦思不得其解,以前只使用mdiParent和mdiChild来设置使得FormA中加载FormB,但是从来没有实现过在Pannel中加载。
求教高手!

参考技术A 在formB中,设置formB.parent=pannel1。formB和pannel分别对应两个control的实例。
再设置把formB设置为最大化,就可以实现pannel加载了。
修改formB.toplevel属性就可以使 formB弹出成为独立的窗口。
参考技术B 我的建议是:
把DataGridView的数据定义在一个公共的类里面
pannel1还是pannel1,FormB还是FormB
只是数据是共同的

请教:C#中,如何在一个窗口中执行另一个窗口的操作?

流程描述:
1).假设现在有两个窗口form1和form2;
2).在form1中有两个按钮"保存"和"设置",
3).鼠标点击"设置"按钮后,打开form2;
4).在form2中可以进行一系列操作,例如现在进行的操作是写入数据库InsertAllOnSubmit操作,但此时并不进行提交到数据库的SubmitChanges操作.
5)进行"关闭"form2操作,但不是真正关闭,只是将窗口hide,因为form1窗口没有关闭前,可能再次点击"设置"按钮修改一些设置
6)在form1中点击"保存"设置,此时需要进行最重要的一步操作:<<"将在form2中修改的信息提交到数据库,即进行SubmitChanges操作">>,同时在进行这个操作的过程中,form2一直处于隐藏状态.
7).关闭form1,同时销毁form2窗口.
问题:如何才能实现第6)个步骤?

form1 构造函数中加一个form实体,把form2直接当参数传过去,在form1中实例一个form 这个form=form2
再调用form2的方法,给你个例子
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;

namespace 呼叫器

public partial class 特呼表 : Form


Form form;
public 特呼表(string PCName, object timeOut, string docName, string currentOfficeName,Form form)

// TODO: Complete member initialization
InitializeComponent();
this.PCName = PCName;
this.timeOut = timeOut;
this.docName = docName;
this.currentOfficeName = currentOfficeName;
this.form = form;


private void 特呼表_Load(object sender, EventArgs e)




private void dgvPatient_CellDoubleClick(object sender, DataGridViewCellEventArgs e)


form.Refresh();

参考技术A 你只需要在form2中写一个public方法用来提交数据,然后在form1中调用不就行了? 参考技术B 如果直接调用其他窗口的控件可能会导致线程安全问题,最好使用委托来实现

以上是关于C# 如何在pannel控件中加载子窗口(form)的主要内容,如果未能解决你的问题,请参考以下文章

C#,reportviewer控件,怎么填充整个窗口

c#如何从另一个窗口中更改主窗口控件的属性

C#中两个form窗体之间如何访问相互属性控件,如下:

C#中panel 如何获取健盘事件

c# 如何切换窗口

用C# winForm,一个pannel容器上有许多label,怎样才能使得鼠标点击label时触发的pannel事件呢?