永发信息网

winform中用户控件传值给窗体。

答案:3  悬赏:0  手机版
解决时间 2021-02-15 02:09
  • 提问者网友:辞取
  • 2021-02-14 08:22
双击用户控件中一个文本框,弹出一个窗体。并把这个文本框中的值传给窗体。思想都有,就是实现不了。所以麻烦不要只说个怎么做,给个大概代码让我试试吧。
下面是我用的一个方法,不行。但这方法在把窗体中值传到控件中就OK。检查了也没问题。网上也找不到合适的。
窗体BCwin中代码:
public delegate string cd_names();
private void BCwin_Load(object sender, EventArgs e)
{
UCdept dept = new UCdept();
cd_names depts = dept.setTxtDept_cd;
IDataParameter[] parameters = new SqlParameter[1];

parameters[0] = new SqlParameter("@dept_cd", SqlDbType.VarChar, 10);

parameters[0].Value = depts();
DataSet ds = DbHelperSQL.RunProcedure("[PROC_BC010TB_OPEN]", parameters, "hr010tb", 120);
GvData.DataSource = ds.Tables[0];
}
控件UCdept中代码:
//部门代码
public string setTxtDept_cd()
{
return cds;
}
string cds = "";
#region 双击部门代码文本框
private void txtDept_cd_DoubleClick(object sender, EventArgs e)
{
BCwin frm = new BCwin();
cds = txtDept_cd.Text; //这边本来是有值的,但居然执行了两次,第二次就没值了。
frm.ShowDialog();
}
#endregion
如果给的方法Ok的话,会再加10分滴。麻烦了!!!
最佳答案
  • 五星知识达人网友:洒脱疯子
  • 2021-02-14 08:33
窗体BCwin中代码:
public delegate string cd_names();
private string cds = "";
public string CDS
{
get(return cds;)
set(cds = value;)
}
private void BCwin_Load(object sender, EventArgs e)
{
UCdept dept = new UCdept();
cd_names depts = cds;
IDataParameter[] parameters = new SqlParameter[1];

parameters[0] = new SqlParameter("@dept_cd", SqlDbType.VarChar, 10);

parameters[0].Value = depts();
DataSet ds = DbHelperSQL.RunProcedure("[PROC_BC010TB_OPEN]", parameters, "hr010tb", 120);
GvData.DataSource = ds.Tables[0];
}

控件UCdept中代码:
//部门代码

#region 双击部门代码文本框
private void txtDept_cd_DoubleClick(object sender, EventArgs e)
{
BCwin frm = new BCwin();
frm.CDS = txtDept_cd.Text; //这边本来是有值的,但居然执行了两次,第二次就没值了。
frm.ShowDialog();
}
#endregion

如果看不懂可以追问,我给你解释。手写的,可能会有微小的编译错误,如果自己解决不了也可以追问。
全部回答
  • 1楼网友:罪歌
  • 2021-02-14 10:34
楼下的不行吗
  • 2楼网友:玩世
  • 2021-02-14 09:23
usercontrol 的话。应该没问题吧。开放个MyValue的属性 控件里面写 privat virtual string MyValue public string MyValue { get{return MyValue;}; set{return MyValue=value;} } 然后在doubleclick中写 form.show(); ------------------------ form里的load方法是可以添加参数的。比如 protected void Form1_Load(object sender, EventArgs e,string val) { textbox1.text = val; } 记得这么写是可以的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯