如何动态产生Button,停靠在主窗体的panel. 因为要动态产生的Button数量为数据库的数据所决定。所以必需用代码产生Button.要求放在panel上,每行,每列的个数不一样。超出panel,大小,自动产生滚动条。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 panel1.AutoScroll = true;Button btn = new Button();btn.Size = new Size(75, 20);panel1.Controls.Add(btn); btn.Location = new Point(5, 5); //这个设置位置...具体,你可以根据行列来计算Button摆放的位置... public void putRoomOn() { // 清空所有房间 panel1.Controls.Clear(); //一行排列多少间房 int rowCount = Convert.ToInt32(ds.Tables["FTCSB0"].Rows[0].ItemArray[5].ToString()); //计数器 int roomCount = 0; //房台宽度 int roomWid = Convert.ToInt32(ds.Tables["FTCSB0"].Rows[0].ItemArray[1].ToString()); //房台高度 int roomHei = Convert.ToInt32(ds.Tables["FTCSB0"].Rows[0].ItemArray[2].ToString()); //数据库房间总数 int AllRooms = dvroom.Count; //两房态之间的距离 int roomjl = Convert.ToInt32(ds.Tables["FTCSB0"].Rows[0].ItemArray[4].ToString()); //房间Y轴间距 int Locttion_y = 5; int i, j; for (i = 0; i < AllRooms / rowCount+1; i++) { //房台X轴间距 int Location_X = 5; for (j = 0; j < rowCount; j++) { //判断房间数据是否都读齐了 if (roomCount == AllRooms) break; //labelRoom样式 #region labRoom = new Label(); labRoom.Name = "labRoom" + i.ToString() + j.ToString(); labRoom.AutoSize = false; labRoom.ForeColor = lblAll.ForeColor; labRoom.BorderStyle = BorderStyle.FixedSingle; labRoom.Cursor = System.Windows.Forms.Cursors.Hand; labRoom.Location = new System.Drawing.Point(Location_X, Locttion_y); //获取房间参数 roomID = dvroom[i * rowCount + j][0].ToString().Trim(); roomType = dvroom[i * rowCount + j][3].ToString().Trim(); roomzt = dvroom[i*rowCount+j][4].ToString().Trim(); roomtzsm = dvroom[i * rowCount + j][8].ToString().Trim(); roomydf = dvroom[i * rowCount + j][7].ToString().Trim(); roomfj = dvroom[i * rowCount + j][5].ToString().Trim(); //文本设置 labRoom.Text = roomID + "\n" + roomType; //右键菜单 labRoom.ContextMenuStrip = this.contextMenu; //颜色设置 #region switch (roomzt) { case "VC": labRoom.BackColor = this.lblkjf.BackColor; this.tlTRoom.SetToolTip(labRoom, "\r\n\r\n " + roomtzsm + " \r\n\r\n"); break; case "OC": labRoom.BackColor = this.lblzhf.BackColor; dvTS.RowFilter = "房号='" + roomID + "' and 标识='I'"; try { string kerenzh = dvTS[0][0].ToString(); string fh = dvTS[0][2].ToString(); string xm = dvTS[0][1].ToString(); string fj = dvTS[0][3].ToString(); string ddrq = dvTS[0][4].ToString(); string ldrq = dvTS[0][5].ToString(); this.tlTRoom.SetToolTip(labRoom, " \r\n 帐号:" + kerenzh + " 房号:" + fh + " \r\n 姓名:" + xm + "房价:" + fj + "(¥) \r\n 抵店日期:" + ddrq + " \r\n 离店日期:" + ldrq + "\r\n"); } catch (Exception ex) { MessageBox.Show(ex.Message); } break; case "VD": labRoom.BackColor = this.lblzf.BackColor; break; case "OO": labRoom.BackColor = this.lblwxf.BackColor; dvWXXX.RowFilter = "FH0000='" + roomID + "' and XFT000='OO'"; dvWXXX.Sort = "RQ0000 desc"; this.tlTRoom.SetToolTip(labRoom, dvWXXX[0][3].ToString()); break; } #endregion labRoom.Size = new System.Drawing.Size(roomWid, roomHei); labRoom.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lbl_MouseDown); labRoom.DoubleClick += new System.EventHandler(lbl_DoubleClick); this.panel1.Controls.Add(labRoom); #endregion Location_X += roomWid + roomjl; roomCount++; } Locttion_y += roomHei + roomjl; } } //鼠标单击时间 private void lbl_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { Label b = (Label)sender; lblel = b; this.txtnum.Text = b.Text.Substring(0, 4); } 参考代码:panel1.AutoScroll = true;for(int row=0;row<20;row++){ for(int col=0;col<10;col++) { Button btn = new Button(); btn.Size = new Size(75, 20); btn.Location = new Point(col*(btn.Width+5), row*(btn.Height+5)); panel1.Controls.Add(btn); }} C#如何截取以下的字符串 c#调用存储过程时,SqlDbType.Decimal 类型的参数,如何指定小数的精度呢? 正则表达式高手进。 xml实现如何识别非法字符? 求用C#编写的UDP客户端自动发送数据程序编写方法 问一个关于软件测试的问题? c#如何判断鼠标是否静止了一段时间 做了3天3夜 也不能做好 新菜鸟求助! 求救!数据库更新问题!!! 请教AxWebBrowser问题.. 读取字符串的问题
{
// 清空所有房间
panel1.Controls.Clear(); //一行排列多少间房 int rowCount = Convert.ToInt32(ds.Tables["FTCSB0"].Rows[0].ItemArray[5].ToString());
//计数器 int roomCount = 0;
//房台宽度
int roomWid = Convert.ToInt32(ds.Tables["FTCSB0"].Rows[0].ItemArray[1].ToString());
//房台高度
int roomHei = Convert.ToInt32(ds.Tables["FTCSB0"].Rows[0].ItemArray[2].ToString());
//数据库房间总数
int AllRooms = dvroom.Count;
//两房态之间的距离
int roomjl = Convert.ToInt32(ds.Tables["FTCSB0"].Rows[0].ItemArray[4].ToString());
//房间Y轴间距 int Locttion_y = 5;
int i, j;
for (i = 0; i < AllRooms / rowCount+1; i++)
{
//房台X轴间距 int Location_X = 5;
for (j = 0; j < rowCount; j++)
{
//判断房间数据是否都读齐了
if (roomCount == AllRooms)
break; //labelRoom样式
#region
labRoom = new Label();
labRoom.Name = "labRoom" + i.ToString() + j.ToString();
labRoom.AutoSize = false;
labRoom.ForeColor = lblAll.ForeColor;
labRoom.BorderStyle = BorderStyle.FixedSingle;
labRoom.Cursor = System.Windows.Forms.Cursors.Hand;
labRoom.Location = new System.Drawing.Point(Location_X, Locttion_y);
//获取房间参数
roomID = dvroom[i * rowCount + j][0].ToString().Trim();
roomType = dvroom[i * rowCount + j][3].ToString().Trim();
roomzt = dvroom[i*rowCount+j][4].ToString().Trim();
roomtzsm = dvroom[i * rowCount + j][8].ToString().Trim();
roomydf = dvroom[i * rowCount + j][7].ToString().Trim();
roomfj = dvroom[i * rowCount + j][5].ToString().Trim();
//文本设置
labRoom.Text = roomID + "\n" + roomType;
//右键菜单
labRoom.ContextMenuStrip = this.contextMenu;
//颜色设置
#region
switch (roomzt)
{
case "VC":
labRoom.BackColor = this.lblkjf.BackColor;
this.tlTRoom.SetToolTip(labRoom, "\r\n\r\n " + roomtzsm + " \r\n\r\n");
break;
case "OC":
labRoom.BackColor = this.lblzhf.BackColor;
dvTS.RowFilter = "房号='" + roomID + "' and 标识='I'";
try
{
string kerenzh = dvTS[0][0].ToString();
string fh = dvTS[0][2].ToString();
string xm = dvTS[0][1].ToString();
string fj = dvTS[0][3].ToString();
string ddrq = dvTS[0][4].ToString();
string ldrq = dvTS[0][5].ToString();
this.tlTRoom.SetToolTip(labRoom, " \r\n 帐号:" + kerenzh + " 房号:" + fh + " \r\n 姓名:" + xm + "房价:" + fj + "(¥) \r\n 抵店日期:" + ddrq + " \r\n 离店日期:" + ldrq + "\r\n");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
break;
case "VD":
labRoom.BackColor = this.lblzf.BackColor;
break;
case "OO":
labRoom.BackColor = this.lblwxf.BackColor;
dvWXXX.RowFilter = "FH0000='" + roomID + "' and XFT000='OO'";
dvWXXX.Sort = "RQ0000 desc";
this.tlTRoom.SetToolTip(labRoom, dvWXXX[0][3].ToString());
break;
}
#endregion labRoom.Size = new System.Drawing.Size(roomWid, roomHei);
labRoom.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lbl_MouseDown);
labRoom.DoubleClick += new System.EventHandler(lbl_DoubleClick);
this.panel1.Controls.Add(labRoom); #endregion Location_X += roomWid + roomjl;
roomCount++;
}
Locttion_y += roomHei + roomjl;
}
}
//鼠标单击时间
private void lbl_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
Label b = (Label)sender;
lblel = b;
this.txtnum.Text = b.Text.Substring(0, 4);
}
{
for(int col=0;col<10;col++)
{
Button btn = new Button();
btn.Size = new Size(75, 20);
btn.Location = new Point(col*(btn.Width+5), row*(btn.Height+5));
panel1.Controls.Add(btn);
}
}