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分滴。麻烦了!!! 展开
下面是我用的一个方法,不行。但这方法在把窗体中值传到控件中就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分滴。麻烦了!!! 展开
3个回答
展开全部
窗体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
如果看不懂可以追问,我给你解释。手写的,可能会有微小的编译错误,如果自己解决不了也可以追问。
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类型的。
展开全部
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;
}
记得这么写是可以的
控件里面写
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;
}
记得这么写是可以的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼下的不行吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询