一个窗体实现冒泡排序里多个dataGridView实现同一方法类型

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
第一章 ASP.NET 教程 (基础)
第二章 ASP.NET 教程(高级)求助:将窗体2里的datagridview1里一行传到窗体1里的datagridview1【c#吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:112,289贴子:
我在窗体2里用双击事件,然后不知道怎么传值额。说是获取窗体2里的datagridview1里的ID,然后再将窗体1的datagridview1绑定这个ID可行,怎么弄啊,各位大大给点代码看看
阿里云云市场提供功能丰富的发者必备软件,帮助用户快速简便的操作和管理云主机服务器以及虚拟主机的管理系统
额,没人吗
这样做不到,建议多看datatble,datarow,看懂这两个类,应该行了。
我如果前台销售 qtxs = new 前台销售();
qtxs.dataGridView1.DataSource = dataGridView1.DataS
qtxs.Show();我如果这样绑定的话,只能实现一次的显示,譬如我搜到:可乐,点击了,在前台窗口显示可乐;然后我继续搜到雪碧的话,再点击又出现一个新的前台销售窗口,不能到原来那个窗口去,大哥,有办法解决不 [如果用这样形式的绑定的话】
尝试下··第一个窗口在Form1 中定义一个方法 Public DataTable ToFromDataTable(){ return From 中定义好的表格}From2
f2=new Form();f2.Show()第二个窗口Public void Load(){From1 f=new From1()qtws.dataGridView1.DataSource=f.ToFromDataTable();}
主窗口 代码
希望对你有帮助 DataTable table =
public MainForm(){
InitializeComponent();
table = new DataTable();//初始化DataTable
BinddtMainDataSource();//绑定数据
public void BinddtMainDataSource(){
string cnString = "Data source=.\\integrated security =database=Northwind";
string selectDataSourceExpress = "Select * From Products";
SqlDataAdapter adapter = new SqlDataAdapter(selectDataSourceExpress, cnString);
adapter.Fill(table); //绑定数据源带本窗口的DataGridView
dtMain.DataSource =
public DataTable ToMajorFormDataSource(){
//将本窗口的一个数据源提供给另一个窗口使用
private void btnShowMajorForm_Click(object sender, EventArgs e){
MajorForm majorForm = new MajorForm();
majorForm.Show();
//Show另一个窗口
}//第二个窗体代码public MajorForm()
InitializeComponent();
BingDataSourceTodaMajor();
//绑定数据源
public void BingDataSourceTodaMajor()
MainForm main = new MainForm();
//调用第一个窗体的table数据源加载到本窗体的dtMajor控件上
dtMajor.DataSource = main.ToMajorFormDataSource();
private void btnShowMainForm_Click(object sender, EventArgs e)
要源代码留个联系方式。
,谢谢哥们了
登录百度帐号推荐应用C#进行DataGridView打印功能的一个类代码,后面会附上一个打印测试代码。这个类可实现打印内容的初始化、纸张大小的设置、定义用于绘制打印报表的打印事件、弹出打印预览窗体等功能,还有更多更细节的功能就不说了,我们先来看这个类的代码如下:
using System.Collections.G
using System.L
using System.T
using System.Windows.F
using System.Drawing.P
using System.D
using System.D
using System.C
namespace PrintDirection
//Copyright (C)
class PrintClass
private DataGridV
private PrintDo
private PageSetupDi
private PrintPreviewDialo
int currentpageindex = 0;//当前页的编号
int rowcount = 0;//数据的行数
int pagecount = 0;//打印页数
public int x = 0;//绘画时的x轴位置
public int PrintPageHeight = 1169;//打印的默认高度
public int PrintPageWidth = 827;//打印的默认宽度
public int headerheight = 30;//标题高度
public int topmargin = 60; //顶边距
public int celltopmargin = 6;//单元格顶边距
public int pagerowcount = 7;//每页行数
public int rowgap = 23;//行高
public int colgap = 5;//每列间隔
public int leftmargin = 50;//左边距
public Font headerfont = new Font(&arial&, 9, FontStyle.Bold);//列名标题字体
public Brush brushHeaderFont = new SolidBrush(Color.Black);//列名字体画刷
public Font Cellfont = new Font(&arial&, 9);//单元格字体
public bool isautopagerowcount =//是否自动计算行数
public int buttommargin = 80;//底边距
public bool PageAspect =//打印的方向
public static bool PageScape =//打印方向
public int PageSheet = 0;
#endregion
打印信息的初始化
/// &summary&
/// 打印信息的初始化
/// &/summary&
/// &param datagrid=&DataGridView&&打印数据&/param&
/// &param PageS=&int&&纸张大小&/param&
/// &param lendscape=&bool&&是否横向打印&/param&
public PrintClass(DataGridView datagrid, int PageS, bool lendscape)
this.datagrid =//获取打印数据
this.PageSheet = PageS;//纸张大小
printdocument = new PrintDocument();//实例化PrintDocument类
pagesetupdialog = new PageSetupDialog();//实例化PageSetupDialog类
pagesetupdialog.Document =//获取当前页的设置
printpreviewdialog = new PrintPreviewDialog();//实例化PrintPreviewDialog类
printpreviewdialog.Document =//获取预览文档的信息
printpreviewdialog.FormBorderStyle = FormBorderStyle.Fixed3D;//设置窗体的边框样式
//横向打印的设置
if (PageSheet &= 0)
if (lendscape == true)
printdocument.DefaultPageSettings.Landscape =//横向打印
printdocument.DefaultPageSettings.Landscape =//纵向打印
pagesetupdialog.Document =
printdocument.PrintPage += new PrintPageEventHandler(this.printdocument_printpage);//事件的重载
#endregion
纸张大小的设置
/// &summary&
纸张大小的设置
/// &/summary&
/// &param n=&int&&纸张大小的编号&/param&
/// &returns&返回string对象&/returns&
public string Page_Size(int n)
string pageN = &&;//纸张的名称
switch (n)
case 1: { pageN = &A5&; PrintPageWidth = 583; PrintPageHeight = 827; }
case 2: { pageN = &A6&; PrintPageWidth = 413; PrintPageHeight = 583; }
case 3: { pageN = &B5(ISO)&; PrintPageWidth = 693; PrintPageHeight = 984; }
case 4: { pageN = &B5(JIS)&; PrintPageWidth = 717; PrintPageHeight = 1012; }
case 5: { pageN = &Double Post Card&; PrintPageWidth = 583; PrintPageHeight = 787; }
case 6: { pageN = &Envelope #10&; PrintPageWidth = 412; PrintPageHeight = 950; }
case 7: { pageN = &Envelope B5&; PrintPageWidth = 693; PrintPageHeight = 984; }
case 8: { pageN = &Envelope C5&; PrintPageWidth = 638; PrintPageHeight = 902; }
case 9: { pageN = &Envelope DL&; PrintPageWidth = 433; PrintPageHeight = 866; }
case 10: { pageN = &Envelope Monarch&; PrintPageWidth = 387; PrintPageHeight = 750; }
case 11: { pageN = &ExeCutive&; PrintPageWidth = 725; PrintPageHeight = 1015; }
case 12: { pageN = &Legal&; PrintPageWidth = 850; PrintPageHeight = 1400; }
case 13: { pageN = &Letter&; PrintPageWidth = 850; PrintPageHeight = 1100; }
case 14: { pageN = &Post Card&; PrintPageWidth = 394; PrintPageHeight = 583; }
case 15: { pageN = &16K&; PrintPageWidth = 775; PrintPageHeight = 1075; }
case 16: { pageN = &8.5x13&; PrintPageWidth = 850; PrintPageHeight = 1300; }
return pageN;//返回纸张的名
#endregion
/// &summary&
打印事件(主要用于绘制打印报表)
/// &/summary&
private void printdocument_printpage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
PrintPageWidth = e.PageBounds.W//获取打印线张的宽度
PrintPageHeight = e.PageBounds.H//获取打印线张的高度
if (this.isautopagerowcount)//自动计算页的行数
pagerowcount = (int)((PrintPageHeight - this.topmargin - this.headerfont.Height - this.headerheight - this.buttommargin) / this.rowgap);//获取每页的行数
pagecount = (int)(rowcount / pagerowcount);//获取打印多少页
pagesetupdialog.AllowOrientation =//启动打印页面对话框的方向部分
if (rowcount % pagerowcount & 0)//如果数据的行数大于页的行数
pagecount++;//页数加1
int colcount = 0;//记录数据的列数
int y =//获取表格的顶边距
string cellvalue = &&;//记录文本信息(单元格的文本信息)
int startrow = currentpageindex *//设置打印的初始页数
int endrow = startrow + this.pagerowcount & rowcount ? startrow + pagerowcount ://设置打印的最大页数
int currentpagerowcount = endrow -//获取打印页数
colcount = datagrid.ColumnC//获取打印数据的列数
x =//获取表格的左边距
//获取报表的宽度
int cwidth = 0;
for (int j = 0; j & j++)//循环数据的列数
if (datagrid.Columns[j].Width & 0)//如果列的宽大于0
cwidth += datagrid.Columns[j].Width +//累加每列的宽度
y +=//设置表格的上边线的位置
//设置标题栏中的文字
for (int j = 0; j & j++)//遍历列数据
int colwidth = datagrid.Columns[j].W//获取列的宽度
if (colwidth & 0)//如果列的宽度大于0
cellvalue = datagrid.Columns[j].HeaderT//获取列标题
//绘制标题栏文字
e.Graphics.DrawString(cellvalue, headerfont, brushHeaderFont, x, y + celltopmargin);//绘制列标题
x += colwidth +//横向,下一个单元格的位置
int nnp = y + currentpagerowcount * rowgap + this.//下一行线的位置
//打印所有的行信息
for (int i = i & i++) //对行进行循环
x =//获取线的X坐标点
for (int j = 0; j & j++)//对列进行循环
if (datagrid.Columns[j].Width & 0)//如果列的宽度大于0
cellvalue = datagrid.Rows[i].Cells[j].Value.ToString();//获取单元格的值
e.Graphics.DrawString(cellvalue, Cellfont, brushHeaderFont, x, y + celltopmargin+rowgap);//绘制单元格信息
x += datagrid.Columns[j].Width +//单元格信息的X坐标
y = y + rowgap * (cellvalue.Split(new char[] { '\r', '\n' }).Length - 1);//单元格信息的Y坐标
y +=//设置下行的位置
currentpageindex++;//下一页的页码
if (currentpageindex & pagecount)//如果当前页不是最后一页
e.HasMorePages =//打印副页
e.HasMorePages =//不打印副页
this.currentpageindex = 0;//当前打印的页编号设为0
#endregion
#region 显示打印预览窗体
/// &summary&
显示打印预览窗体
/// &/summary&
public void print()
rowcount = 0;//记录数据的行数
string paperName = Page_Size(PageSheet);//获取当前纸张的大小
PageSettings storePageSetting = new PageSettings();//实列化一个对PageSettings对象
foreach (PaperSize ps in printdocument.PrinterSettings.PaperSizes)//查找当前设置纸张
if (paperName == ps.PaperName)//如果找到当前纸张的名称
storePageSetting.PaperSize =//获取当前纸张的信息
if (datagrid.DataSource.GetType().ToString() == &System.Data.DataTable&)//判断数据类型
rowcount = ((DataTable)datagrid.DataSource).Rows.C//获取数据的行数
else if (datagrid.DataSource.GetType().ToString() == &System.Collections.ArrayList&)//判断数据类型
rowcount = ((ArrayList)datagrid.DataSource).C//获取数据的行数
printdocument.DefaultPageSettings.Landscape = PageS//设置横向打印
pagesetupdialog.Document =
printpreviewdialog.ShowDialog();//显示打印预览窗体
catch (Exception e)
throw new Exception(&printer error.& + e.Message);
#endregion
与此相关的代码:
using System.Collections.G
using System.D
using System.D
using System.L
using System.T
using System.Windows.F
using System.Data.SqlC
namespace PrintDirection
public partial class Form1 : Form
public Form1()
InitializeComponent();
public bool Aspect =//打印方向
public bool boundary =//是否打印分割线
private void Form1_Activated(object sender, EventArgs e)
//在窗体中绘制一个预览表格
Graphics g = panel_Line.CreateGraphics();
int paneW = panel_Line.W//设置表格的宽度
int paneH = panel_Line.H//设置表格的高度
g.DrawRectangle(new Pen(Color.WhiteSmoke, paneW), 0, 0, paneW, paneH);//绘制一个矩形
private void Form1_Load(object sender, EventArgs e)
comboBox_PageSize.SelectedIndex = 0;
SqlConnection sqlcon = new SqlConnection(&Data Source=(local);Database=NUid=Pwd=;&);
SqlDataAdapter sqlda = new SqlDataAdapter(&select * from Region&, sqlcon);
DataSet myds = new DataSet();
sqlda.Fill(myds);
dataGridView1.DataSource = myds.Tables[0];
private void checkBox_Aspect_MouseDown(object sender, MouseEventArgs e)
//改变窗体中预览表格的方向
int aspX = 0;//宽度
int aspY = 0;//高度
if (((CheckBox)sender).Checked == false)//如果不是纵向打印
aspX = 136;//设置大小
aspY = 98;
PrintClass.PageScape =//横向打印
aspX = 100;//设置大小
aspY = 116;
PrintClass.PageScape =//纵向打印
panel_Line.Width = aspX;//设置控件的宽度
panel_Line.Height = aspY;//设置控件的高度
aspX = (int)((groupBox1.Width - aspX) / 2);//设置控件的Top
panel_Line.Location = new Point(aspX, 90);//设置控件的位置
Form1_Activated(sender, e);//设用Activated事件
private void button_Preview_Click(object sender, EventArgs e)
//对打印信息进行设置
PrintClass dgp = new PrintClass(this.dataGridView1, comboBox_PageSize.SelectedIndex, checkBox_Aspect.Checked);
MSetUp(dgp);//记录窗体中打印信息的相关设置
string[] header = new string[dataGridView1.ColumnCount];//创建一个与数据列相等的字符串数组
for (int p = 0; p & dataGridView1.ColumnC p++)//记录所有列标题的名列
header[p] = dataGridView1.Columns[p].HeaderCell.Value.ToString();
dgp.print();//显示打印预览窗体
设置打印数据的相关信息
/// &summary&
/// 设置打印数据的相关信息
/// &/summary&
/// &param dgp=&PrintClass&&公共类PrintClass&/param&
private void MSetUp(PrintClass dgp)
dgp.PageAspect = A//设置横向打印
#endregion
关键地方都加了注释,搞C#的应该都能看懂,不多介绍了,觉得有用的自己研究吧。
本类推荐文章
本类最新更新
最新源码下载查看:10922|回复:2
Winform 中 datagridview 实现 双击某行(整行)弹出另一窗体,并显示该条数据的详细信息
鼠标选中整行的设置方法:datagridview 的 SelectionMode 属性设置为 FullRowSelect
右击datagridview 选择属性 ,选择事件面板 找到:CellDoubleClick 双击进入代码模式
思路:首先获取datagridview中的某行数据中的某个字段值,比如:某行显示的是一条用户的信息,编号,用户名,密码,注册时间等
现在获取整行数据的第一列,ID的值。(dgvUserList 是我的datagridview 控件)
获取方法:public string UserId = Convert.ToString(this.dgvUserList.CurrentRow.Cells[0].Value.ToString());
得到ID之后就可以根据ID查询你想要的信息了& &&&
下面代码是datagridview 的双击事件
& && &&&/// &summary&
& && &&&/// 双击某行,修改
& && &&&/// &/summary&
& && &&&/// &param name=&sender&&&/param&
& && &&&/// &param name=&e&&&/param&
& && &&&private void dgvUserList_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
& && && && &//获取用户Id
& && && && &UserId = Convert.ToString(this.dgvUserList.CurrentRow.Cells[0].Value.ToString());
& && && && &//实例化子窗体
& && && && &FormEditUserInfo EditUserInfo = new FormEditUserInfo();
& && && && &//弹出模式对话框(子窗体)
& && && && &EditUserInfo.ShowDialog();
这步做完之后,到子窗体,定义一个变量,接收父窗体的UserId。然后根据这个Id,查询这条数据的详细信息,用控件一个一个绑定进来。或者做其他操作
子窗体代码,窗体Load事件里写
private void FormEditUserInfo_Load(object sender, EventArgs e)
& &&&User _User = new U //实例化对象
& &&&//根据用户ID,查询用户所有信息,返回对象
& & //这个方法是BLL层的方法,我用三层做的
& & _User = _User_Manager.GetUserInfoByUserIdObj(Convert.ToString(UserId));
& & this.txtUserId.Text = _User.User_Id;
& & this.txtUserLoginName.Text = _User.User_LoginN
& & this.txtUserLoginPwd.Text = _User.User_LoginP
& & this.txtUserRemark.Text = _User.User_R& && && && &&&
winform下做比较简单。
初学者,谢谢分享!

我要回帖

更多关于 qt中实现无边框的窗体 的文章

 

随机推荐