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

双击用户控件中一个文本框,弹出一个窗体。并把这个文本框中的值传给窗体。思想都有,就是实现不了。所以麻烦不要只说个怎么做,给个大概代码让我试试吧。下面是我用的一个方法,不行... 双击用户控件中一个文本框,弹出一个窗体。并把这个文本框中的值传给窗体。思想都有,就是实现不了。所以麻烦不要只说个怎么做,给个大概代码让我试试吧。
下面是我用的一个方法,不行。但这方法在把窗体中值传到控件中就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分滴。麻烦了!!!
展开
 我来答
bigxuanbigxuan
2011-09-26 · 超过40用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:112万
展开全部
窗体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

如果看不懂可以追问,我给你解释。手写的,可能会有微小的编译错误,如果自己解决不了也可以追问。
追问
昨晚试了下,
private void BCwin_Load(object sender, EventArgs e)
{
UCdept dept = new UCdept();
cd_names depts = cds; //这步无法实现。
报错:错误1无法将类型“string”隐式转换为“BCwin.cd_names”
cds是string类型的。
咪密兔解说
2011-09-26 · TA获得超过424个赞
知道小有建树答主
回答量:488
采纳率:0%
帮助的人:286万
展开全部
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;
}
记得这么写是可以的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
KK鱿小鱼
2011-09-26 · TA获得超过155个赞
知道答主
回答量:67
采纳率:0%
帮助的人:53.4万
展开全部
楼下的不行吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式