c#中如何在窗体中新建一个excel窗体文本框复制控件显示出之前窗体中的所有控件的值

| 漏洞检测 |
| 隐藏捆绑 |
C#编写第三方控件,实现窗体控件的一键赋值
、 事出有因 在写程序的时候,经常会写上面这样的代码,把查询的结果显示到窗体上,我们怎么做的呢? 一行一行的进行赋,这样的代码写起来最枯燥,而且还容易出错。大家有没有发现,上面的代码都在做相同的事情―赋。相类的代码写了三遍以上,就要考虑是不是
在写程序的时候,经常会写上面这样的代码,把查询的结果显示到上,我们怎么做的呢? 一行一行的进行赋值,这样的代码写起来最枯燥,而且还容易出错。大家有没有发现,上面的代码都在做相同的事情―赋值。相类似的代码写了三遍以上,就要考虑是不是能对这个过程进行封装。封装出一个方法,帮我们自动完成这些重复性的操作。
所接触项目中也有写好的类似方法。只是它涉及到了很多其它的方法,一个套一个,抽离出来特别不方便。而且还有几个令人不爽的地方: 第一是,在命名的时候必须和相对应实体属性相同。比如说,姓名这一项,实体的属性名称为sname,那么的名称也必须是sname,显然这和我们所遵循的一般命名规范是相违背的。第二是,控件的可见性级别必须设置为Public ,要不然会赋不上值。
所以,在研究完他的方法后,对它重新进行了,做出了一些改进。弥补了上面的两个缺点,使其应用起来更加方便一些。
所用到的方法,题目中写提到了。控件,听着挺高大上,其实就是对C#原有的控件,进行重写,增加一条自己用到的属性而已。在这里增加的属性我将它命名为DataField,用来保存数据库字段的名称。作用嘛?往下看就知道了。。
笔者在这用C#编写了一个Demo,用来说明如何编写控件以及的赋值。
新建一个C#项目
添加一个接口 Interface1:
interface Interface1
//定义DataField属性
string DataField { }
添加两个类ComboxEx、ComboxEx:
using System.Windows.F
//添加引用
internal class TextBoxEx : TextBox, Interface1
//该类继承TextBox控件和接口Interface1
#region Interface1 成员
public string DataField
#endregion
internal class ComboxEx : ComboBox, Interface1
#region Interface1 成员
public string DataField
#endregion
然后打开工具箱,我们会看到:
这就是我们封装的第三方控件。把它拖到窗体上,右击查看其属性
它多了一条DataField属性,我们可以给他赋上值SID(学生表的字段名―学号)同样再拖拽出几个控件并且赋值。
然后开始正式编写代码,添加一个实体类StuEntity:
注意:实体属性的名称要和数据库字段名称保持一致!
public class StuEntity
public string SID { }
public string sname { }
public string sex { }
public string department { }
public string grade { }
public string sclass { }
需要说明的一点:这只是一个小Demo并没有采用分层的写法,把编写的方法全部放在了FrmHelper类中
public class FrmHelper
/// 获取实体,将DataTable的行给实体类enStudent
/// 这里可以采用机房中封装好的方法,将DataTable转换
/// 成实体类的泛型集合,可以省去这些。
/// DataTable的行
/// 返回实体类enStudent
public static StuEntity GetEntity(DataRow dr)
StuEntity enStudent = new StuEntity();
enStudent.SID = dr["SID"].ToString();
enStudent.sname = dr["sname"].ToString();
enStudent.sex = dr["sex"].ToString();
enStudent.department = dr["department"].ToString();
enStudent.grade = dr["grade"].ToString();
enStudent.sclass = dr["sclass"].ToString();
return enS
/// 将实体类中属性的值,填充到窗体的控件上
public static void FillFormByEntity(StuEntity enStudent, Form thisfrm)
//遍历窗体上的控件
foreach (Control ctrl in thisfrm.Controls)
//是否继承了接口
if (ctrl is Interface1)
//是否属于文本框
if (ctrl is TextBoxEx)
ctrl.Text = GetValue(enStudent, ((TextBoxEx)ctrl).DataField);
}//如果属于下拉框
else if (ctrl is ComboxEx)
((ComboxEx)ctrl).Text = GetValue(enStudent, ((ComboxEx)ctrl).DataField);
//如果还有其他类型的控件,可在此进行扩展。
/// 利用反射技术,动态的从实体中获取与控件相对应的值
/// 实体类
/// 字段值
public static string GetValue(StuEntity enStudent, string DataFiled)
PropertyInfo field = enStudent.GetType().GetProperty(DataFiled);
return field.GetValue(enStudent, null).ToString();
/// 执行查询语句,返回一个DateTable
/// DateTable
public static DataTable QueryTable()
using (SqlConnection connection = new SqlConnection("server=.; database=Re_Charge_user id=password=123456"))
SqlCommand cmd = connection.CreateCommand();
mandText = @"select * from Student_info where SID ='110'";
DataTable dt = new DataTable();
DataSet ds = new DataSet();
connection.Open();
SqlDataAdapter sqlAdapter = new SqlDataAdapter(cmd);
sqlAdapter.Fill(ds);
dt = ds.Tables[0];
catch (System.Data.SqlClient.SqlException ex)
throw new Exception(ex.Message);
客户端调用:
private void btnFillValue_Click(object sender, EventArgs e)
DataTable dt = FrmHelper.QueryTable();
StuEntity enStudent = FrmHelper.GetEntity(dt.Rows[0]);
FrmHelper.FillFormByEntity(enStudent, this);
private void Form1_Load(object sender, EventArgs e)
cmbGrade.Items.AddRange(new String[] { "一年级", "二年级", "三年级", "四年级" });
cmbSex.Items.AddRange(new String[] { "男", "女" });
//cmbSex.Items.Add(new KeyValuePair("男", "男"));
//cmbSex.Items.Add(new KeyValuePair("女", "女"));
//cmbSex.DisplayMember = "Key";
//cmbSex.ValueMember = "Value";
点击赋值按钮,从数据库读取出的数据就会自动填写到界面控件当中。
谈谈第三方控件
(责任编辑:幽灵学院)
------分隔线----------------------------
在进行软件开发,尤其是开发WinForm程序时,有时为了实现界面的美化,不可避免的需要...
菜单创建格式: {button: [{type: click,name: 今日歌曲,key: V1001_TODAY_MUSIC},{na...
错误和异常的总结 因为总结吗,,可能概念啥的比较多,大家要学着适应. 首先是C#中的异常...
优先队列(priority queue) 是很重要的数据结构。我在做 ACM 题时就经常要用到她。C++ ...
在做.Net项目时,经常遇到在设计界面时,出现未将对象引用设置到对象实例问题,下面给...
概要 当多个任务或线程并行运行时,难以避免的对某些有限的资源进行并发的访问。可以...
admin@1744.cc
工作日:9:00-21:00
周 六:9:00-18:00
&&扫一扫关注幽灵学院
广告服务:QQ:在vb里从一个窗体form1得到另一个窗体form2中控件的值,直接写form2.text1.text就可以,在c#中怎么实现_imooo软件程序bug解决方案
在vb里从一个窗体form1得到另一个窗体form2中控件的值,直接写form2.text1.text就可以,在c#中怎么实现
在vb里从一个窗体form1得到另一个窗体form2中控件的值,直接写form2.text1.text就可以,在c#中如何实现在vb里从一个窗体form1得到另一个窗体form2中控件的值,直接写form2.text1.text就可以在c#中如何实现------解决方案--------------------首先是MainFrm窗体,在MainFrm窗体中,拖一个ListBox控件即可,MainFrm.cs的代码如下:下面是对应的C#代码,MainFrm.cs:public partial class MainFrm: Form//引用Middle类{ private void MainFrm _Load(object sender, EventArgs e)//窗体的加载事件 {
Middle.sendEvent += new Middle.SendMessage(this.DoMethod);//把方法注册到时间里 } public void DoMethod(string[] getstr) {
//你要设置的属性 }}ChildFrm.cs:public partial class ChildFrm: Form//引用Middle类{ public ChildFrm () {
InitializeComponent(); } private void btnAdd_Click(object sender, EventArgs e) {
strInfo[] = textBox3 内容+textBox4内容。。
Middle.DoSendMessage(你要改的内容strInfo);//触发事件&
}}Middle.cs:public static class Middle//{ public delegate void SendMessage(string[] str); public static event SendMessage sendE public static void DoSendMessage(string[] str) {
sendEvent(str); }}
------解决方案--------------------通过工具栏拖到VS设计器上 该控件的默认访问性是protected 你把改成public 即可在其他窗体中 使用~~~
------解决方案--------------------楼上的最简单
改了就和VB里面一样
------解决方案--------------------1楼是定义了个共有方法公开了私有/受保护对象2楼直接公开了私有/受保护对象欲解决不同线程问题,你可以使用1楼或者直接invoke
- 千颜 - 泊妊 - 媛筠 - 蓝玫 - 芃羽 - 晓凡 - 品婷 - 纪莹 - 纪瞳 - 晓叁 - 话梅 - 姬小苔 - 纪莹 - 纪晴 - 话梅> c#中怎么通过点击一个窗口中的按钮去改变另一个窗体中控件的属性
c#中怎么通过点击一个窗口中的按钮去改变另一个窗体中控件的属性
windywang2007 & &
发布时间: & &
浏览:312 & &
回复:1 & &
悬赏:0.0希赛币
c#中如何通过点击一个窗口中的按钮去改变另一个窗体中控件的属性比如有两个窗体A、B,窗体A是主窗体,有一个按钮,点击按钮弹出窗体B,窗体B有一个按钮,点击按钮可将窗体A的按钮文本改为“ok”
參見 windzhq & &
& & (0)(0)引用
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&10:33 提问
C#中自定义类给窗体中的textbox.text赋值
C#项目中,定义了一个类reader.cs 现在想在reader中调用from1中的textbox1并且直接给textbox1.text赋值。
请教各位了。
按赞数排序
textbox1.text="";就行了。
先把textbox1的访问修饰符改成public
再textbox1.text=(string)赋值的文本;
//from1.cs
public TextBox tb=new TextBox();
//new一个reader
//reader.cs
from1.tb.Text="加载完成";
1006关注|311收录
其他相似问题
相关参考资料c#中如何给另外一个窗体的控件赋值
c#中如何给另外一个窗体的控件赋值
09-04-21 &匿名提问
实不相瞒 ,没看明白你要干什么,但是有一点看出俩了,你datalist控件和DataReader对象都没掌握很牢靠。 1 datalist控件的显示需要你自定义模板,模板代码写在aspx文件里面,不是cs里面,如果你没有自定义模板的话当然绑定数据也不能显示。 2 while 循环 只是为几个变量赋了值,没有任何其他功能了,看不出来你要干什么,如果你要把他们显示在datalist中的话,不应该把他们写在这里,而是应该放在datalist的模板里面使用绑定语句进行绑定
请登录后再发表评论!}

我要回帖

更多关于 access窗体文本框更新 的文章

更多推荐

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

点击添加站长微信