关于在tabcontrol动态生成控件 无法刷新的问题

问题描述

做课设用了一个tabcontrol控件,在tabcontrol里面连接数据库自动生成label如图背景的颜色是红色表示已入住绿色的表示空房那么问题来了,单击绿色的label进行入住操作,入住成功后tabcontrol的tabpage1不能更新,其余的tabpage234可以更新请问怎么在tabcontrol的tabpage1更新?急急急~代码如下publicpartialclassMainMenu:Form{Formloginform=null;stringname;publicMainMenu(Formf,TextBoxtb){InitializeComponent();this.loginform=f;name=tb.Text;}publicMainMenu(){InitializeComponent();}privatevoidMainMenu_FormClosed(objectsender,FormClosedEventArgse){loginform.Close();}privatevoidbutton1_Click(objectsender,EventArgse){GuestRoomStandardroomtype=newGuestRoomStandard();roomtype.ShowDialog();}privatevoidbutton2_Click(objectsender,EventArgse){Settingnihao=newSetting(name);nihao.ShowDialog();}privatevoidlab_Mouseleave(objectsender,EventArgse){Labellab=(Label)(sender);toolTip1.Hide(lab);}privatevoidtabControl1_Selecting_2(objectsender,TabControlCancelEventArgse){mainmenu();}privatevoidbutton3_Click(objectsender,EventArgse){AddGuestRoomaddroomtype=newAddGuestRoom(this.tabControl1.SelectedTab.Text);addroomtype.ShowDialog();}privatevoidMainMenu_Activated(objectsender,EventArgse){mainmenu();}privatevoidmainmenu(){try{stringCString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=HotelsManagement.mdb";stringstrCom="SELECT*FROMGuestRoomORDERBYRoomIDASC";//该字符串变量用来存放把从数据集集中读取的数据转换成的字符串stringstrCom2="SELECTRoomID,[SettleAmount]FROMCoustomerORDERBYRoomIDASC";OleDbConnectionMyCon=newOleDbConnection(CString);//创建一个OleDbConnection对象MyCon.Open();OleDbCommandMyCom=newOleDbCommand();MyCom.Connection=MyCon;MyCom.CommandType=CommandType.Text;MyCom.CommandText=strCom;OleDbDataAdapterMyDataAdapter=newOleDbDataAdapter();MyDataAdapter.SelectCommand=MyCom;DataSetMyDs=newDataSet();MyDataAdapter.Fill(MyDs,"GuestRoom");MyCom.CommandText=strCom2;OleDbDataAdapterMyDataAdapter2=newOleDbDataAdapter();MyDataAdapter2.SelectCommand=MyCom;DataSetMyDs2=newDataSet();MyDataAdapter.Fill(MyDs2,"Coustomer");boolflag=false;inti=0,j=0,k=1,l=0,m=0,Row=0;for(i=0;i<MyDs.Tables["GuestRoom"].Rows.Count;i++){Labellab=newLabel();//定义一个Label控件if((Convert.ToString(this.tabControl1.SelectedTab.Text)=="全部")||(Convert.ToString(MyDs.Tables["GuestRoom"].Rows[i]["Type"])==Convert.ToString(this.tabControl1.SelectedTab.Text))){lab.Text=Convert.ToString(MyDs.Tables["GuestRoom"].Rows[i]["RoomID"])+"n"+Convert.ToString(MyDs.Tables["GuestRoom"].Rows[i]["Type"]);Row=Convert.ToInt32(MyDs.Tables["GuestRoom"].Rows[i]["RoomID"])/100;lab.TextAlign=System.Drawing.ContentAlignment.MiddleCenter;lab.Size=newSystem.Drawing.Size(55,55);lab.Font=newFont("宋体",12);for(m=0;m<MyDs2.Tables["Coustomer"].Rows.Count;m++){if(Convert.ToString(MyDs.Tables["GuestRoom"].Rows[i]["RoomID"])==Convert.ToString(MyDs2.Tables["Coustomer"].Rows[m]["RoomID"])&&(Convert.ToString(MyDs2.Tables["Coustomer"].Rows[m]["SettleAmount"])=="")){lab.BackColor=Color.Red;flag=true;lab.Name=Convert.ToString(i)+","+Convert.ToString(m);break;}}if(!flag){lab.Name=Convert.ToString(i);lab.BackColor=Color.Green;}flag=false;if(k!=Row&&j!=0){l++;//换行j=0;//回车}elseif(j!=0&&j%10==0){l++;//换行j=0;//回车}lab.Location=newPoint(j*65+10,l*65+10);this.tabControl1.SelectedTab.Controls.Add(lab);lab.MouseClick+=newMouseEventHandler(lab_click);//用代码动态连接事件lab.MouseEnter+=newEventHandler(lab_Mouseenter);lab.MouseLeave+=newEventHandler(lab_Mouseleave);lab.MouseDoubleClick+=newMouseEventHandler(lab_Doubleclick);j++;k=Row;}}MyCon.Close();}catch(Exceptionex){MessageBox.Show("连接HotelsManagement数据库发生错误:"+ex.ToString(),"错误!");}}

解决方案

解决方案二:
你的代码没看。你的意思是:第一个选项卡,从数据库加载数据,如果空房(绿色标签展现)、红色标签代表入住现在你点击绿色标签,完成入住。这个时候第一个选项卡没有刷新?如果你的软件只有一个客户端,点击入住,无需全部是刷新;如果有多个客户端在工作,点击入库,选项卡1的内容需要重新载入一下,绘制最新的入住、空房情况。多个客户端的话,需要考虑并发操作。
解决方案三:
tabpage234怎么做的,tabpage1就怎么做呗。

时间: 2024-08-20 00:23:20

关于在tabcontrol动态生成控件 无法刷新的问题的相关文章

关于动态生成控件和动态获得控件的句柄值

动态|控件 从问题者的发的贴子:help me里面需要动态获得控件的句柄值,这些日子在vs.net里试了一下,总结出一点点经验,如下:1.动态生成控件:不管是在asp.net里还是在windows application里,每一个控件都可以作为母控件,在其中添加一些子的控件,当然添加可以是手工添加进去,而动态添加控件一般如下:(asp.net中)         dim textbox as textbox       '动态添加一个textbox控件        textbox=new te

C#动态生成控件以及添加事件处理

有时候需要在程序运行到一定时候或者某个事件之后需要动态生成控件 在C#下一般方式是: private Button Db=new Button() ; Db.Name="Dy_Button" //设定名称 Db.Location=new Point(100,200);//设定位置 ....//其他属性设置 //这里添加消息处理 .. this.Controls.Add (Db);//添加到控件组中 这样就完成了动态生成但是需要给控件添加消息处理事件 那么现在就需要在生成控件添加到控件组

asp.net-ASP.NET C#如何获取动态生成控件的值?

问题描述 ASP.NET C#如何获取动态生成控件的值? 假如我在后台动态生成了控件: TextBox textbox=new TextBox(); textbox.ID="textbox1"; panel.Controls.Add(textbox);//panel是一个.NET控件Panel 请问在运行程序后怎样获取这个textbox1里面填入的值? 希望大神给予解答!谢谢! 解决方案 textbox1.getText();这样就获取到了textbox1中输入的文本值了. 如果回答对

Asp.net中使用文本框的值动态生成控件的方法_实用技巧

看到一个网友,有论坛上问及,动态的生成checkbox控件,在文本框中输入一个"花"字,点一下"生成"按钮,就会在下面生成一个checkbox,它的text属性是"花".再输入一个"鸟",点一下按钮,就会生成第二个checkbox控件,text属性是"鸟"... Insus.NET的解决方法很简单,就是每次在文本框输入的值都存起来,然后把这些数据绑定至一个CheckBoxList控件上就行了. 详细,先创建

wpf-WPF 后台动态生成控件

问题描述 WPF 后台动态生成控件 我的项目中需要生成很多个button列表,所以需要后台添加,但是生成的button还有template,查了一下,目前就我所知生成的方法是: FrameworkElementFactory 和XamlReader.Load,前者看到的资料说效果很不好,后者却不知道怎么做,请教各位大神! 解决方案 http://www.cnblogs.com/KevinYang/archive/2010/09/06/1818981.html

如何将ASP.NET动态生成控件的值赋给页面静态控件

问题描述 如何将ASP.NET动态生成控件的值赋给页面静态控件最近作一个产品发布功能,但是由于产品的技术参数不统一,需要根据产品的类型动态生成控件.动态控件生成后需要多控件赋值,但是所赋的值需要给页面的静态控件,通过静态控件添加到数据库的技术参数字段下.将动态控件的赋值再给页面静态控件应该如何作呢?请教高手,望给予指点哦,急啊!这是我写的动态控件的生成代码://通过类型绑定技术参数privatevoiddatabindpramametersbyproducttype(intnid){ChinaE

动态生成控件的消息处理

今天用MFC做了一个动太生成控件的小程序,有关生成的控件 在网上查了一些资源,在这里整理一下 首先生成控件(这里以CButtonST为例,其它类似): //生成按钮void CdlgDlg::OnBnClickedButton2()...{    // TODO: 在此添加控件通知处理程序代码    int width,height,left,space;    width=height=22;    left=100;    space=5;        char cNum[10];    

.net里动态生成控件数组

动态|控件|数组 从BASIC开始接触开发的占到了绝大多数,而使用VB起家开始接触win开发也是占了绝 大多数,从vb到vb.net变化确实不小,以前用的很多的控件数组在.net里却没有了,但是费点时间就OK了,这个是我的一个程序里用到的,今天把这 个类贴上来,这个是很早以前从MSDN上看到的,根据他讲的来做的. //********************************* //动态增加,删除数组控件 //做课题设计的同学可以引用这个类 //范维肖 //****************

关于动态生成控件的问题

问题描述 privatevoidAddTextBoxs(){TableRowtr=newTableRow();TableCellTCPartNo=newTableCell();TableCellTCPartName=newTableCell();TableCellTCQuantity=newTableCell();TableCellTCOriginalSN=newTableCell();TableCellTCNewSN=newTableCell();TextBoxTBPartNo=newText