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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教: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#中,如何在一个窗口中执行另一个窗口的操作?的主要内容,如果未能解决你的问题,请参考以下文章

C# 委托调用另一个窗体的函数

如何在 C# .net 网页上显示来自另一个线程的弹出窗口?

C# 主窗口调用子窗口的值传递?

C#窗口应用程序从另一个应用程序的光标位置获取单词

C#中两个窗体间的函数调用

(C#)怎样在一个窗口中调用另一个窗口中的dataGridView