C#winform弹出窗体中一个类中如何调用另一个窗体的

需求:在一个窗体点击确定时,获取文本框选中的文字。另一窗体增加一节点,节点名是该文本框选中的文字。LayerForm是要被调用的窗体,声明该窗体的静态变量,在另一窗体内调用即可。在LayerForm窗体内声明变量:public LayerForm()
InitializeComponent();
Instance =
public static LayerForm I
在新建图层窗体调用该变量下的treeView即可。LayerForm.Instance.treeView1.Nodes.Add(txtBoxLayerName.Text.ToString());
C# winform中一个类中如何调用另一个窗体的控件或方法
一种是创建窗体对象的方式,通过对象调用控件或方法
另一种是不创建窗体对象
在窗体类下定义静态变量,构造方法中引用这个窗体...
C#如何在普通类里调用窗体控件
一种是创建窗体对象的方式,通过对象调用控件或方法
Form1 form1 = new Form1();
form1.B //调用控件
form1.Method();
C# 窗体中一个类中调用另一个窗体的控件或方法
设有form1和from2,假如form1调用form2的控件,在form1的代码窗口定义一个form2的对象,把你想要调用的form2的控件的属性Modifier改为Publlic就可以在form1...
C#中窗体的互相访问 小技巧
1、在父窗体中构造子窗体对象时,将父窗体传递过去:
如:FrmSub frm=new FrmSub(this);//this代表父窗体
2、将父窗体中要访问的变量和方法修改为public
3、在子窗体...
C# 窗体操作汇总
显示界面嵌入到我自己程序的界面上指定的位置上
C#学习之路1-开发简单窗体
先来看看我运行的一个小程序的截图
该程序是使用C#开发,读取个人身份证信息的窗体程序,其中涉及的DLL知识就不深入说明,简单说明界面的实现方式
1.将窗口的FormBorderstyle属性设置为...
C#跨窗体相互调用对方函数
对象对象程序设计,为跨窗体调用提供了良药:即构造函数。只要将某一个窗体对象以参数形式传入到另一个窗体对象的构造函数,即可实现。
一、实际案例需求
C#窗体调用
创建多窗体工程时,就需要窗体间的互相调用。 任务假设: 创建C#工程后,在工程管理栏中会有一个默认的窗体,设为Form1。在Form1中有一个按钮“配置”,按下时调出ConfigForm窗体。Con...
WinForm中一个窗体调用另一个窗体的控件和事件的方法(附带源码)
先申明下,此文适合和我差不多的菜鸟学习,没有什么高深知识点,不想耽误老鸟们的宝贵时间,如果有什么专业术语不对的还请指正啊。
最近进行WinCE的开发,第一次实际做C/S架构的项目,其中遇到很多...
没有更多推荐了,关于C#Winform线程调用窗体的使用方法以及窗体的单一显示
我的图书馆
关于C#Winform线程调用窗体的使用方法以及窗体的单一显示
推一荐:&&|&&
喜欢该文的人也喜欢C#语言关于使用winform执行存储过程后如何刷新当前窗体?
<a data-traceid="question_detail_above_text_l&&
本人是C#初学者,现在有个问题是当前窗体点击按钮执行存储过程后,当前窗体没有刷新,需要在当前代码的基础上加一些代码,使得存储过程执行后,刷新当前窗体,请问怎么做?
点击下图按钮,会调用方法btnDecideActualData_Click()去执行代码中167行存储过程Do1,请问如何修改代码能让执行这个存储过程后刷新当前这个窗体?
using System.Collections.G
using System.ComponentM
using System.D
using System.D
using System.L
using System.Runtime.Remoting.M
using System.T
using System.Threading.T
using System.Windows.F
using MY.BLL;
using MY.C
namespace MY
private string connPCDB =
private CommonPara cp = new CommonPara();
private string flag = "";//初始化被选中的记录的标志位空
private int checked_count = 0;//计算被选中的checkbox的数量
private int bin = -1;
FarPoint.Win.BevelBorder bevelbrdr = new FarPoint.Win.BevelBorder(FarPoint.Win.BevelBorderType.Raised, Color.Gray, Color.Gray);//设置灰色边框
#endregion
private delegate bool DoWorkDelegate();
public frmDecideActualData()
InitializeComponent();
this.loadingPanel1.OnRotateStateChanged += new LoadingPanel.RotateStateChangedHandler(loadingPanel1_OnRotateStateChanged);
private void frmDecideActualData_Load(object sender, EventArgs e)
connPCDB = cp.GetConString();
SqlHelper sh = new SqlHelper(connPCDB);
sh.Param = sh.GetNewParam();
sh.Param.AddParam("@w", SqlDbType.Int, 0);
DataSet ds = sh.ExecuteDatasetSP("Get1", ref sh.Param, 3000);
setSpreadData(ds.Tables[0]);
for (int i = 0; i & sprdMain.Sheets[0].Rows.C i++)//初始化时将不能选的checkbox设置为不可用并添加灰色边框
int col7_value = int.Parse(sprdMain.Sheets[0].Cells[i, 6].Value.ToString());//第7列
if (col7_value == 1)//如果是1则将checkbox边框设置为灰色
sprdMain.Sheets[0].Cells[i, 4].Locked =//将checkbox设置为不可用
sprdMain.Sheets[0].Cells[i, 4].Border =//给checkbox所在的单元格设置边框,标志这个单元格的checkbox是不可以使用的状态
catch (Exception)
#endregion
#region spread
private void setSpreadData(DataTable spdt)
if (this.sprdMain.ActiveSheet.RowCount & 0)
this.sprdMain.ActiveSheet.Rows.Count = 0;
this.sprdMain.ActiveSheet.Rows.Count = spdt.Rows.C
DataRowCollection rows = spdt.R
int rowCount = rows.C
int nowRow = 0;
for (int i = 0; i & rowC i++)
sprdMain.ActiveSheet.Cells[nowRow, 0].Value = rows[i]["A"].ToString();
sprdMain.ActiveSheet.Cells[nowRow, 1].Value = rows[i]["B"].ToString();
sprdMain.ActiveSheet.Cells[nowRow, 2].Value = rows[i]["C"].ToString();
sprdMain.ActiveSheet.Cells[nowRow, 3].Value = rows[i]["D"].ToString();
sprdMain.ActiveSheet.Cells[nowRow, 4].Value = rows[i]["E"].ToString();
sprdMain.ActiveSheet.Cells[nowRow, 5].Value = rows[i]["F"].ToString();
sprdMain.ActiveSheet.Cells[nowRow, 6].Value = rows[i]["G"].ToString();
#endregion
private void btnExit_Click(object sender, EventArgs e)
this.Close();
#endregion
void loadingPanel1_OnRotateStateChanged()
this.Invoke(new Action(delegate()
this.sprdMain.Visible = !this.sprdMain.V
this.btnDecideActualData.Enabled = !this.btnDecideActualData.E
this.btnExit.Enabled = !this.btnExit.E
private bool DoWork()
System.Threading.Thread.Sleep(10000);
private void DoWorkCallBack(IAsyncResult ar)
AsyncResult result = (AsyncResult)
DoWorkDelegate caller = (DoWorkDelegate)result.AsyncD
bool bResult = caller.EndInvoke(ar);
this.loadingPanel1.Stop();
private void btnDecideActualData_Click(object sender, EventArgs e)
if (MessageBox.Show("do it", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel)
{ //点击的是"OK"按钮
int count = 0;//计算被选择的复选框数量
string status = "";
for (int i = 0; i & sprdMain.Sheets[0].Rows.C i++)
status = sprdMain.Sheets[0].Cells[i, 4].Value.ToString();//复选框是否被选中
if (status == "True")//"True"为选中,"0"为未选中。
if (count == 0)
else if (count & 1)
else//count == 1
DoWorkDelegate doWorkDelegate = this.DoW
doWorkDelegate.BeginInvoke(new AsyncCallback(DoWorkCallBack), null);
this.loadingPanel1.Start();
connPCDB = cp.GetConString();
SqlHelper sh = new SqlHelper(connPCDB);
sh.Param = sh.GetNewParam();
sh.Param.AddParam("@a", SqlDbType.Int, -1);
sh.Param.AddParam("@b", SqlDbType.Int, bin);
DataSet ds = sh.ExecuteDatasetSP("Do1 ", ref sh.Param, 3000);
catch (Exception)
private void sprdMain_ButtonClicked(object sender, FarPoint.Win.Spread.EditorNotifyEventArgs e)
checked_count = 0;
for (int i = 0; i & sprdMain.Sheets[0].Rows.C i++)
if (checked_count &= 1)
flag = sprdMain.Sheets[0].Cells[i, 4].Value.ToString();//复选框是否被选中
if (flag == "True")//"True"为选中,"0"为未选中。
int col7_value = int.Parse(sprdMain.Sheets[0].Cells[i, 6].Value.ToString());//第7列
if (col7_value == 0)//如果是0则checkbox可用
bin = int.Parse(sprdMain.Sheets[0].Cells[i, 0].Value.ToString());
checked_count++;
checked_count = 0;
引用来自“张亦俊”的评论
重新调用一下你这里边的setSpreadData?
或者说把this.sprdMain清空一下再重新调用setSpreadData?
桌面应用不比web,没有直接刷新的功能哟
我这样写了,好用了,谢谢!208-232行是把load方法封装了一下,然后174行重新调用。
using System.Collections.G
using System.ComponentM
using System.D
using System.D
using System.L
using System.Runtime.Remoting.M
using System.T
using System.Threading.T
using System.Windows.F
using MY.BLL;
using MY.C
namespace MY
private string connPCDB =
private CommonPara cp = new CommonPara();
private string flag = "";//初始化被选中的记录的标志位空
private int checked_count = 0;//计算被选中的checkbox的数量
private int bin = -1;
FarPoint.Win.BevelBorder bevelbrdr = new FarPoint.Win.BevelBorder(FarPoint.Win.BevelBorderType.Raised, Color.Gray, Color.Gray);//设置灰色边框
#endregion
private delegate bool DoWorkDelegate();
public frmDecideActualData()
InitializeComponent();
this.loadingPanel1.OnRotateStateChanged += new LoadingPanel.RotateStateChangedHandler(loadingPanel1_OnRotateStateChanged);
private void frmDecideActualData_Load(object sender, EventArgs e)
connPCDB = cp.GetConString();
SqlHelper sh = new SqlHelper(connPCDB);
sh.Param = sh.GetNewParam();
sh.Param.AddParam("@w", SqlDbType.Int, 0);
DataSet ds = sh.ExecuteDatasetSP("Get1", ref sh.Param, 3000);
setSpreadData(ds.Tables);
for (int i = 0; i & sprdMain.Sheets.Rows.C i++)//初始化时将不能选的checkbox设置为不可用并添加灰色边框
int col7_value = int.Parse(sprdMain.Sheets.Cells[i, 6].Value.ToString());//第7列
if (col7_value == 1)//如果是1则将checkbox边框设置为灰色
sprdMain.Sheets.Cells[i, 4].Locked =//将checkbox设置为不可用
sprdMain.Sheets.Cells[i, 4].Border =//给checkbox所在的单元格设置边框,标志这个单元格的checkbox是不可以使用的状态
catch (Exception)
#endregion
#region spread
private void setSpreadData(DataTable spdt)
if (this.sprdMain.ActiveSheet.RowCount & 0)
this.sprdMain.ActiveSheet.Rows.Count = 0;
this.sprdMain.ActiveSheet.Rows.Count = spdt.Rows.C
DataRowCollection rows = spdt.R
int rowCount = rows.C
int nowRow = 0;
for (int i = 0; i & rowC i++)
sprdMain.ActiveSheet.Cells[nowRow, 0].Value = rows[i]["A"].ToString();
sprdMain.ActiveSheet.Cells[nowRow, 1].Value = rows[i]["B"].ToString();
sprdMain.ActiveSheet.Cells[nowRow, 2].Value = rows[i]["C"].ToString();
sprdMain.ActiveSheet.Cells[nowRow, 3].Value = rows[i]["D"].ToString();
sprdMain.ActiveSheet.Cells[nowRow, 4].Value = rows[i]["E"].ToString();
sprdMain.ActiveSheet.Cells[nowRow, 5].Value = rows[i]["F"].ToString();
sprdMain.ActiveSheet.Cells[nowRow, 6].Value = rows[i]["G"].ToString();
#endregion
private void btnExit_Click(object sender, EventArgs e)
this.Close();
#endregion
void loadingPanel1_OnRotateStateChanged()
this.Invoke(new Action(delegate()
this.sprdMain.Visible = !this.sprdMain.V
this.btnDecideActualData.Enabled = !this.btnDecideActualData.E
this.btnExit.Enabled = !this.btnExit.E
private bool DoWork()
System.Threading.Thread.Sleep(10000);
private void DoWorkCallBack(IAsyncResult ar)
AsyncResult result = (AsyncResult)
DoWorkDelegate caller = (DoWorkDelegate)result.AsyncD
bool bResult = caller.EndInvoke(ar);
this.loadingPanel1.Stop();
private void btnDecideActualData_Click(object sender, EventArgs e)
if (MessageBox.Show("do it", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel)
{ //点击的是"OK"按钮
int count = 0;//计算被选择的复选框数量
string status = "";
for (int i = 0; i & sprdMain.Sheets.Rows.C i++)
status = sprdMain.Sheets[0].Cells[i, 4].Value.ToString();//复选框是否被选中
if (status == "True")//"True"为选中,"0"为未选中。
if (count == 0)
else if (count & 1)
else//count == 1
DoWorkDelegate doWorkDelegate = this.DoW
doWorkDelegate.BeginInvoke(new AsyncCallback(DoWorkCallBack), null);
this.loadingPanel1.Start();
connPCDB = cp.GetConString();
SqlHelper sh = new SqlHelper(connPCDB);
sh.Param = sh.GetNewParam();
sh.Param.AddParam("@a", SqlDbType.Int, -1);
sh.Param.AddParam("@b", SqlDbType.Int, bin);
DataSet ds = sh.ExecuteDatasetSP("Do1 ", ref sh.Param, 3000);
catch (Exception)
frmDecideActualData_Common_Load();//执行完存储过程后调用该方法重新查询数据
private void sprdMain_ButtonClicked(object sender, FarPoint.Win.Spread.EditorNotifyEventArgs e)
checked_count = 0;
for (int i = 0; i & sprdMain.Sheets[0].Rows.C i++)
if (checked_count &= 1)
flag = sprdMain.Sheets[0].Cells[i, 4].Value.ToString();//复选框是否被选中
if (flag == "True")//"True"为选中,"0"为未选中。
int col7_value = int.Parse(sprdMain.Sheets[0].Cells[i, 6].Value.ToString());//第7列
if (col7_value == 0)//如果是0则checkbox可用
bin = int.Parse(sprdMain.Sheets[0].Cells[i, 0].Value.ToString());
checked_count++;
checked_count = 0;
private void frmDecideActualData_Common_Load() {//重新加载窗体
connPCDB = cp.GetConString();
SqlHelper sh = new SqlHelper(connPCDB);
sh.Param = sh.GetNewParam();
sh.Param.AddParam("@DISP_TYPE", SqlDbType.Int, 0);
DataSet ds = sh.ExecuteDatasetSP("GetProductionTableDataForDecideActual", ref sh.Param, 3000);
setSpreadData(ds.Tables[0]);
for (int i = 0; i & sprdMain.Sheets[0].Rows.C i++)//初始化时将不能选的checkbox设置为不可用并添加灰色边框
int col7_value = int.Parse(sprdMain.Sheets[0].Cells[i, 6].Value.ToString());//第7列出荷確定済フラグ的值
if (col7_value == 1)//如果是1则将checkbox边框设置为灰色
sprdMain.Sheets[0].Cells[i, 4].Locked =//将checkbox设置为不可用
sprdMain.Sheets[0].Cells[i, 4].Border =//给checkbox所在的单元格设置边框,标志这个单元格的checkbox是不可以使用的状态
catch (Exception)
重新调用一下你这里边的setSpreadData?
或者说把this.sprdMain清空一下再重新调用setSpreadData?
桌面应用不比web,没有直接刷新的功能哟
重新绑定数据源就行了C#,winform程序,如何在一个窗体的事件里,修改另一个窗体控件的值
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 winform跳转窗体 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信