datagridview的combox联动.doc_第1页
datagridview的combox联动.doc_第2页
datagridview的combox联动.doc_第3页
datagridview的combox联动.doc_第4页
datagridview的combox联动.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

datagridview的combox联动最近整datagridview的combox联动问题,主要就是datagridview的combox数据绑定问题,怎么也搞不定,后来用来一个ws的方法,就是datagridview上动态添加combox,而不是把datagridview的列设为datagridviewcomboboxcolumn(因为这样没搞定),就是点击datagirdview的某个cell时,在该cell上显示一个combox,让用户选择并把值传到datagridview的cell中还有个问题就是combox.Height设置combox的高度是没有用的,最后只好用api搞定。相关代码,spaceWindowsFormsApplication12.3.partialclassgvForm4.5./6./Requireddesignervariable.7./8.privateSystem.ComponentModel.IContainercomponents=null;9.10./11./Cleanupanyresourcesbeingused.12./13./trueifmanagedresourcesshouldbedisposed;otherwise,tectedoverridevoidDispose(booldisposing)15.16.if(disposing&(components!=null)17.18.components.Dispose();19.20.base.Dispose(disposing);21.22.23.#regionWindowsFormDesignergeneratedcode24.25./26./RequiredmethodforDesignersupport-donotmodify27./thecontentsofthismethodwiththecodeeditor.28./29.privatevoidInitializeComponent()30.31.this.dataGridView1=newSystem.Windows.Forms.DataGridView();32.(System.ComponentModel.ISupportInitialize)(this.dataGridView1).BeginInit();33.this.SuspendLayout();34./35./dataGridView136./37.this.dataGridView1.AllowUserToAddRows=false;38.this.dataGridView1.AllowUserToDeleteRows=false;39.this.dataGridView1.ColumnHeadersHeightSizeMode=System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;40.this.dataGridView1.Dock=System.Windows.Forms.DockStyle.Fill;41.this.dataGridView1.Location=newSystem.Drawing.Point(0,0);42.this.dataGridView1.Name=dataGridView1;43.this.dataGridView1.RowTemplate.Height=23;44.this.dataGridView1.Size=newSystem.Drawing.Size(662,300);45.this.dataGridView1.TabIndex=0;46.this.dataGridView1.Scroll+=newSystem.Windows.Forms.ScrollEventHandler(this.dataGridView1_Scroll);47.this.dataGridView1.RowHeightChanged+=newSystem.Windows.Forms.DataGridViewRowEventHandler(this.dataGridView1_RowHeightChanged);48.this.dataGridView1.CurrentCellChanged+=newSystem.EventHandler(this.dataGridView1_CurrentCellChanged);49.this.dataGridView1.ColumnWidthChanged+=newSystem.Windows.Forms.DataGridViewColumnEventHandler(this.dataGridView1_ColumnWidthChanged);50./51./gvForm52./53.this.AutoScaleDimensions=newSystem.Drawing.SizeF(6F,12F);54.this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;55.this.ClientSize=newSystem.Drawing.Size(662,300);56.this.Controls.Add(this.dataGridView1);57.this.Name=gvForm;58.this.Text=gvForm;59.this.Load+=newSystem.EventHandler(this.gvForm_Load);60.(System.ComponentModel.ISupportInitialize)(this.dataGridView1).EndInit();61.this.ResumeLayout(false);5.#endregion66.67.privateSystem.Windows.Forms.DataGridViewdataGridView1;68.69.70.cs文件:1.usingSystem;2.usingSystem.Collections.Generic;3.usingSystem.ComponentModel;4.usingSystem.Data;5.usingSystem.Drawing;6.usingSystem.Linq;7.usingSystem.Text;8.usingSystem.Windows.Forms;9.10.namespaceWindowsFormsApplication111.12.publicpartialclassgvForm:Form13.14./两个combox多行联动15.privateComboBoxcb1=newComboBox();16.privateComboBoxcb2=newComboBox();17.18./设置combox高度,解决默认修改combox.Height属性不能改变高度的问题19.System.Runtime.InteropServices.DllImport(user32.dll)20.privatestaticexternintSendMessage(IntPtrhWnd,intMsg,intwParam,intlParam);21.privateconstintCB_SETITEMHEIGHT=0x153;22.privateboolSetComboBoxHeight(ComboBoxcb,intheight)23.24.intrtn=SendMessage(cb.Handle,CB_SETITEMHEIGHT,-1,height);25.cb.Refresh();26.returnrtn!=-1;27.28.29.publicgvForm()30.31.InitializeComponent();32.33./34./不连接数据库,临时创建table35./36./列名37./表名38./行数39./40.privateDataTableCreateDataTable(stringparamsCols,stringname,introwCount)41.42.DataTabletable=newDataTable(name);43.foreach(stringsinparamsCols)44.table.Columns.Add(s,typeof(string);45.for(inti=0;irowCount;i+)46.47.DataRowrow=table.NewRow();48.foreach(stringsinparamsCols)49.50.rows=s+_+i;51.52.table.Rows.Add(row);53.54.returntable;55.56.57.privatevoidgvForm_Load(objectsender,EventArgse)58.59./创建整个datagridview的datasource60.this.dataGridView1.DataSource=CreateDataTable(newID,Name,CBOne,CBTwo,Main,5);61.this.cb1.Visible=false;62.this.cb2.Visible=false;63./为combox添加selectindex消息响应64.this.cb1.SelectedIndexChanged+=newEventHandler(cb1_SelectedIndexChanged);65.this.cb2.SelectedIndexChanged+=newEventHandler(cb1_SelectedIndexChanged);66.this.dataGridView1.Controls.Add(this.cb1);67.this.dataGridView1.Controls.Add(this.cb2);68.69.70.voidcb1_SelectedIndexChanged(objectsender,EventArgse)71.72.this.dataGridView1.CurrentCell.Value=(ComboBox)sender).Text;73.74.75./76./即时设定combox的动态数据源77./78./79./80.privatevoiddataGridView1_CurrentCellChanged(objectsender,EventArgse)81.82.if(this.dataGridView1.CurrentCell=null)83.84.85./第一个combox,根据ID86.elseif(this.dataGridView1.CurrentCell.ColumnIndex=2)87.88.this.cb1.Visible=false;89.this.cb2.Visible=false;90.strings=this.dataGridView1.Rowsthis.dataGridView1.CurrentCell.RowIndex.Cells0.Value.ToString()+_Text;91.92.this.cb1.Items.Clear();93.DataTablecbt1=CreateDataTable(news,cb1,5);94.foreach(DataRowrowincbt1.Rows)95.96.this.cb1.Items.Add(rows);97.98.99.this.cb1.DropDownStyle=ComboBoxStyle.DropDownList;100.this.cb1.SelectedIndex=0;101.102.Rectanglerect=this.dataGridView1.GetCellDisplayRectangle(this.dataGridView1.CurrentCell.ColumnIndex,this.dataGridView1.CurrentCell.RowIndex,true);103.104.this.cb1.Left=rect.Left;105.this.cb1.Top=rect.Top;106.this.cb1.Width=rect.Width;107./设定高度,这个-6不知什么原因,不过减6后才是正确的值108.this.SetComboBoxHeight(this.cb1,rect.Height-6);109.this.cb1.Visible=true;110.111./第二个combox,根据第一个combox绑定相应的数据源112.elseif(this.dataGridView1.CurrentCell.ColumnIndex=3)113.114.this.cb1.Visible=false;115.this.cb2.Visible=false;116.strings=this.dataGridView1.Rowsthis.dataGridView1.CurrentCell.RowIndex.Cells2.Value.ToString()+_L_Text;117.this.cb2.Items.Clear();118.DataTablecbt2=CreateDataTable(news,cb2,5);119.foreach(DataRowrowincbt2.Rows)120.121.this.cb2.Items.Add(rows);122.123.this.cb2.DropDownStyle=ComboBoxStyle.DropDownList;124.this.cb2.SelectedIndex=0;125.126.Rectanglerect=this.dataGridView1.GetCellDisplayRectangle(this.dataGridView1.CurrentCell.ColumnIndex,this.dataGridView1.CurrentCell.RowIndex,true);127.128.this.cb2.Left=rect.Left;129.this.cb2.Top=rect.Top;130.this.cb2.Width=rect.Width;131.this.SetComboBoxHeight(this.cb2,rect.Height-6);132.this.cb2.Visible=true;133.134.else135.136.this.cb1.Visible=false;137.this.cb2.Visible=false;138.139.140./其他消息响应隐藏combox141.privatevoiddataGridView1_Scroll(objectsender,ScrollEventArgse)142.143.this.cb1.Visible=false;144.this.cb2.Visible=false;145.146./改变列宽也改变combox的宽度147.privatevoiddataGridView1_ColumnWidthChanged(objectsender,DataGridViewColumnEventArgse)148.149.if(e.Column.Name.Equals(CBOne)150.151.Rectanglerect=this.dataGridView1.GetCellDisplayRectangle(this.dataGridView1.CurrentCell.ColumnIndex,this.dataGridView1.CurrentCell.RowIndex,true);152.153.this.cb1.Left=rect.Left;154.this.cb1.Top=rect.Top;155.this.cb1.Width=rect.Width;156.this.SetComboBoxHeight(this.cb1,rect.Height);157.158.elseif(e.Column.Name.Equals(CBTwo)159.160.161.Rectanglerect=this.dataGridView1.GetCellDisplayRectangle(this.dataGridView1.CurrentCell.ColumnIndex,this.dataGridView1.CurrentCell.RowIndex,true);162.163.this.cb2.Left=rect.Left;164.this.cb2.Top=rect.Top;165.this.cb2.Width=rect.Width;166.this.SetComboBoxHeight(this.cb2,rect.Height-6);167.168.169./改变行高也改变combox的高度170.privatevoiddataG

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论