C#dataGridView控件问题内容条件显示

图片说明

如图片所示,dataGridView添加了如下的列,默认第三列开始后面的4列SHORT-NAME,CATEGORY,ARRAY-SIZE,ARRAY-SIZE-SEMANTICS的不可见,即Visible属性为false;已经设置好。

现在需求如下,当第二列的值,选中ARRAY之后,
从第三列开始后面的4列SHORT-NAME,CATEGORY,ARRAY-SIZE,ARRAY-SIZE-SEMANTICS的Visible属性变为true

5个回答

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Q691015
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            dataGridView1.Columns.Add(new DataGridViewComboBoxColumn() { Name = "col1", HeaderText = "category", ValueType = typeof(string) });
            dataGridView1.Columns.Add("col2", "short name");
            dataGridView1.Columns[1].Visible = false;
            dataGridView1.CellEnter += new DataGridViewCellEventHandler(dataGridView1_CellEnter);
            dataGridView1.CellBeginEdit += new DataGridViewCellCancelEventHandler(dataGridView1_CellBeginEdit);
            dataGridView1.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dataGridView1_EditingControlShowing);
        }

        void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
        {
            //防止用户切换到另外一行,并且这一列选择的不是array
            if (dataGridView1.Rows[e.RowIndex].Cells[0].Value != null && e.ColumnIndex != 0)
            {
                if (dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString() != "array")
                {
                    e.Cancel = true;
                }
            }
        }

        void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            if (e.Control is ComboBox)
            {
                var cbo = e.Control as ComboBox;
                cbo.TextChanged += new EventHandler(cbo_TextChanged);
            }
        }

        //设置是否可见
        void cbo_TextChanged(object sender, EventArgs e)
        {
            if ((sender as ComboBox).Text == "array")
                dataGridView1.Columns[1].Visible = true;
            else
                dataGridView1.Columns[1].Visible = false;
        }

        void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 0)
            {
                var cell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex] as DataGridViewComboBoxCell;
                cell.Items.Clear();
                cell.Items.Add("none");
                cell.Items.Add("array");
            }
        }
    }
}

caozhy
贵阳老马马善福专门编写代码的老马就是我! 回复ccc9149: if ((sender as ComboBox).Text == "array") 修改下 if ((sender as ComboBox).Text == "array" && dataGridView.CurrentCell.ColumnIndex == 0)
一年多之前 回复
ccc9149
未知昵称 你这个代码貌似是有问题的,如果选择ARRAY之后,后面4列显示出来,如果后面4列也有combox,随意选择一个,4列又会隐藏掉,能不能做到只是当前行多出来4列,其他没有选择ARRAY的,4行不会显示?
一年多之前 回复
ccc9149
未知昵称 好的,谢谢诶。我先测试下
一年多之前 回复
caozhy
贵阳老马马善福专门编写代码的老马就是我! 完整代码:https://download.csdn.net/download/caozhy/10456990lz如果需要留下邮箱可以发给你,别人需要也可以下载。
一年多之前 回复

图片说明

这个效果么?

ccc9149
未知昵称 回复caozhy: 你这个代码貌似是有问题的,如果选择ARRAY之后,后面4列显示出来,如果后面4列也有combox,随意选择一个,4列又会隐藏掉,能不能做到只是当前行多出来4列,其他没有选择ARRAY的,4行不会显示?
一年多之前 回复
caozhy
贵阳老马马善福专门编写代码的老马就是我! 回复showbo: 可爱的bobo~~这个lz一向积极采纳的。所以不用催他。我也愿意为这样的lz提供详细的代码。
一年多之前 回复
showbo
支付宝加好友偷能量挖 回复ccc9149: 是就采纳了...:)
一年多之前 回复
caozhy
贵阳老马马善福专门编写代码的老马就是我! 回复ccc9149: 看下面的代码
一年多之前 回复
ccc9149
未知昵称 对的,是这个效果
一年多之前 回复

不好意思,正在帮你写。你的代码在我这里vs版本不兼容,请稍等。

ccc9149
未知昵称 好的 谢谢
一年多之前 回复

使用cellselected事件处理 关键是这样所有行数据都显示了,你的意思是只要这一行数据显示?如果是这样的话,其他行打算显示什么数据,空白数据?

ccc9149
未知昵称 根据第二列的条件,只要3,4,5,6这四列显示出来,仔细看下我写的需求
一年多之前 回复

巧用事件就可以。但是这样效果不好,可以一直都显示出来。category列选择none时后面那几列不可录入就行了。

ccc9149
未知昵称 巧用事件是指哪个?方便写下吗?
一年多之前 回复
ccc9149
未知昵称 你这个想法可以考虑。
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C#dataGridView控件问题内容条件显示 Q691015
问答板块 https://ask.csdn.net/questions/691015 C#dataGridView控件问题内容条件显示 的回答
C#datagridview条件显示
![图片说明](https://img-ask.csdn.net/upload/201806/12/1528773257_404529.png)nnnn如图所示,C#datagridview,第二列如果选择了不是ARRAY,则后面的4列不可以编辑,选择了ARRAY则后面4列必须填入内容,不许为空。
C#dataGridView控件问题
nn```nList list_events = new List();nEVENTS item_events = new EVENTS();nitem_events.shortname = node.ShortName;nitem_events.typetref = node.TypeTref;nlist_events.Add(item_events);ndataGridView4.DataSource = list_events;nnn```nnn```n n nn class EVENTSn n public string shortname get; set; n public string typetref get; set; nn n```nn![图片说明](https://img-ask.csdn.net/upload/201807/31/1533003745_427516.png)nnn运行程序最终添加到datagridview数据如下所示,n怎么把第二列变成下拉选框的形式,下面图片的样子。n![图片说明](https://img-ask.csdn.net/upload/201807/31/1533003918_214573.png)
C#DataGridView控件问题
[img=https://img-bbs.csdn.net/upload/201506/12/1434075992_888094.png][/img]rnrn就用一个DataGridView能否实现这样的效果?
c#datagridView控件刷新问题
rnwinform窗体rn我每次限定时间去加载数据,每次datagridView就刷新一遍。,如何禁止刷新。但可以更新数据?就是禁止闪烁。
C#dataGridView comboBox控件问题
![图片说明](https://img-ask.csdn.net/upload/201806/04/1528100066_49000.png)nnnn如上图所示,是一个dataGridView中添加了comboBox,现在要给comboBox下拉框填入内容,这里面的内容来自一个txt文档,nnnnntxt文档内容如下。一行数据代表comboBox中的一个值。n怎么把txt的文档内容读取,并赋给dataGridView中的comboBoxnnnn![图片说明](https://img-ask.csdn.net/upload/201806/04/1528100298_414815.png)
c#datagridview的显示问题
我从数据库里查询一张表的数据,付给datagridview 其中 有 三列是 combobox类型的,我给datagridview的datasource属性赋值时 出现了datagridviewcomboboxcell值无效 ,但是 我 已经给 这三列combobox的datasource属性赋值了啊 代码如下rn[code=csharp]rnDataTable dt = new DataTable();rn dt.Columns.Add("OriginalCode");rn dt.Columns.Add("OriginalName");rn DataRow dr1 = dt.NewRow();rn dr1["OriginalCode"] = "True";//赋值为1或0也不好用rn dr1["OriginalName"] = "原件";rnrn DataRow dr2 = dt.NewRow();rn dr2["OriginalCode"] = "False";rn dr2["OriginalName"] = "复印件";rnrn dt.Rows.Add(dr1);rn dt.Rows.Add(dr2);rn dgvfcmbIsOriginal.DataSource = dt;rn dgvfcmbIsOriginal.DisplayMember = "OriginalName";rn dgvfcmbIsOriginal.ValueMember = "OriginalCode";rn[/code]rn[code=csharp]rnDataTable dt = new DataTable();rn dt = CommonMethodHelper.ToDataTable(Cost_FeeInfoManager.GetCost_FeeInfoByBusinessNum(cfi));rn //为付款信息赋值rn dgvfcmbCurrency_Name.DataSource = dt;rn dgvfcmbCurrency_Name.DisplayMember = "Currency_Name";rn dgvfcmbCurrency_Name.ValueMember = "Currency_Id";rn //dgvfcmbCurrency_Name的datapropertyname的值是Currency_Namern ghdgvFukuan.DataSource = dt;rn[/code]rn请问高手这是什么问题啊
c#datagridView显示问题
dgv.Columns[1].Width = 230;rn dgv.Columns[1].HeaderText = "客人名子";rn dgv.Columns[1].ValueType = typeof(string);rn dgv.Columns[1].Tag =1;rnrn string curryName="";rn if(model!=null)rn rn int name = model.CurrencyId;rn cymol = bllcy.GetModel(name);rn curryName = cymol.CurrencyName;rn rnrn输出curryName的时候为啥是错误?正式运行的时候没有问题。测试的时候总是说字符串格式错误。。rnrn什么原因??rn如果我输出int类型。或者curryName=“111111”, 就没有问题。是什么原因导致的?
C#DataGridView控件
C#可以静态绑定数据源,这样就自动为DataGridView控件添加 相应的行。假如需要动态为DataGridView控件添加新行,方法有很多种
C#datagridview控件
在DataGridView控件上选中一行,进行修改操作后,怎么使得它的光标依然在我之前选中的那一行,并且滚动条也在之前的位置呢?rn(数据位置要保持不变,该在哪还是在哪)
C#dataGridView控件显示数据自动消失。
我在一个窗口中添加了两个dataGridView控件。但是当我要显示另外一个时,有一个里的就不显示。点击刷新的时候,刷新按钮操作的数据显示,点击查看按钮,刷新里面的数据就消失。两个按钮用到一个数据库的不同视图。谢谢。![![![图片说明](https://img-ask.csdn.net/upload/201511/20/1448015172_159227.png)图片说明](https://img-ask.csdn.net/upload/201511/20/1448015163_115729.png)图片说明](https://img-ask.csdn.net/upload/201511/20/1448015154_356488.png)
C#DataGridView控件用法合集
DataGridView控件用法合集,包含非常全,值得学习
c#datagridview控件的使用总结
本文主要总结c#datagridview控件的使用,将常常使用的代码段写入了进去。
c#dataGridView控件的语法
1.dataGridView控件的语法 1.1获取选中的行里面列名的数据 dataGridView1.CurrentRow.Cells["Column8"].Value.ToString() 1.2 查看选中了多少行 this.dataGridView1.SelectedRows.Count.ToString() 1.3获取选中的哪列的值 this.dataGridView2.Rows
根据条件显示控件
有三个TEXTBOX.一个BUTTON.一个LABLE.一个GRIDVIEW.只要TEXTBOX里有内容(任何一个),点击BUTTON,显示GRIDVIEW.如果三个TEXTBOX里都没有东西,就显示LABLE.我知道得用那个VISIBLE,三个TEXTBOX都为空时显示LABLE怎么实现的,怎么也别不过来这个劲儿了.望大家指教
C#DataGridView问题
表格的某一列只能输入数字,不可粘贴,不可复制,不可以为空,即使删除到最后也只能为0,不可以为空!如果编辑的单元格失去焦点,不做处理。请问怎么实现?求高手。
c#datagridview问题
写入一行数据,然后取出数据到一个数组里面来 如果光标停留在最后一个单元格里面,为什么取不出来数据,只能光标移到下一行才能取出数据。在线等 挺急的
关于winform的C#datagridview控件显示数据的方式问题
用惯了asp.net的gridview,很不习惯datagirdview。rn如果我要在form上显示一个列表,但是是分两行显示,类似于asp.net中我用模板列画个table来自己绑定的功能该如何实现啊
怎样显示条件以外的内容!!!!
如表:rnrncreate table t_skill(rn skillid number primary key,rn skillname varchar2(20)rn)rnrn/rnrnrncreate table t_emp_skill(rn empid number, rn skillid number, rn sld varchar2(6),rn nx number,rn constraint pk_empid_skillid primary key(empid,skillid)rn)rn两个表联合查询,怎样把条件以外的内容显示到jsp页面的下拉菜单中代码,谢谢!!!
水晶报表------按照条件显示内容
最近完成了一个水晶报表程序,后来客户有提了一个要求:rn当报表中某个特定地方的数据含有“FK”时 该字体扩大一倍,并且加粗(显眼的目的)。rnps: 那个特定的地方出现的数据有三种情况”FK LE CN “ 就是当出现FK 时 自动放大rn请问这个条件写在哪里? 怎么写??????rn小弟不胜感激涕零.......rn
C#datagridview根据条件触发编辑与不可编辑
![图片说明](https://img-ask.csdn.net/upload/201806/14/1528944096_703089.png)rnrnrnrn如图所示,C#datagridview,第二列选择了ARRAY则后面4列必须填入内容,不许为空。rnrn如果选择了不是ARRAY,则后面的4列灰显,不可以编辑。rnrn应该用到datagridview哪个事件??
DropDownList控件显示内容问题!!!!!!!
DropDownList控件的DataTextField属性是不是要显示的字段???如果我要在DropDownList控件中同时显示两个字段,该如何做,我现在将DropDownList的DataTextField="fzcmc",但同时我还要显示fdlbm字段,该如何做???
CEdit 控件显示内容问题
问题是这样的。。rn如::我想把字符串 str = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"在控件CEdit中显示,假如由于字符串太长,只能用滚动条才能把字符串完整的显示在控件中,可是我想不用滚动条,[color=#FF0000]当它在控件的可视区域内显示不全时,我想把剩下的字符串重新显示在当前控件中。[/color]rnrn希望大家给个详细的讲解。。有代码更好。。。
DropDownList控件的内容显示问题?
表tb_app中有字段app_name表示加速应用名,内容如下:rnst_app1rnst_app2rnst_app3 等等~~~~~rn我要把这些内容显示在一个下拉列表框中,写程序如下(我挑了一部分):rnrnprotected System.Web.UI.WebControls.DropDownList appList;rnrnSqlConnection conn=new SqlConnection("server=(local);uid=abc;pwd=123;database=test");rn conn.Open();rn rn SqlCommand myCommand=new SqlCommand("select count(*) as total from tb_app",conn);rn rn SqlDataReader myDataReader = myCommand.ExecuteReader();rn rn while(myDataReader.Read())rn rn total=Convert.ToInt32(myDataReader["total"]);rn rn myDataReader.Close();rn if(total!=0)rn rnrn SqlDataAdapter cmd=new SqlDataAdapter("select app_name from tb_app",conn);rn DataSet appData=new DataSet();rn cmd.Fill(appData,"tb_app");rn appList.DataSource=appData.Tables["tb_app"].DefaultView;rn appList.DataTextField="app_name";rn appList.DataBind();rn rn elsern rn appList.Items.Add("还没有加速应用");rn rn可是这样下拉列表中完整的显示数据库中的字段内容,我现在要显示成这样:rnapp1rnapp2rnapp3rnrn即把前缀st_去掉,上面的程序怎么改?rnrn
c#datagridview操作calendar控件的实例
c#datagridview操作calendar控件的实例
C#dataGridView控件数据导出TXT文件格式
需要将datagridview的数据导出到一个TXT文件中,采用的代码如下:rn Clipboard.SetDataObject(dataGridView1.GetClipboardContent());rn System.IO.File.WriteAllText(@"F:\datagridviewtest\gridviewtest\gridviewtest\bin\Debug\data.txt", Clipboard.GetText());rn导出的数据格式如下:rn1 10 15rn2 12 16rn3 15 18rn4 18 19rn5 20 22rn6 23 25rn7 10 10rn数据和数据之间有多个空格,但是要求每两个数据之间只能有一个空格,不知道哪位大神解决一下,或者提供其他方案?
C#DataGridView控件的设置首列的长度。
//设置首列的长度 this.DataGridView.RowHeadersWidth = 30;  
c#datagridview控件刷新速率过慢
使用的光纤陀螺为300Hz,理论上应该每秒发出300个数据,可是使用c#datagridview控件只能每秒接收到约150个数据,这是什么原因呢,请大佬帮忙解答一下?
c#datagridview控件中添加checkbox
如题,我遇到的问题就是添加之后不显示复选框,只显示空单元格,为什么呢
C#datagridview显示对象的所有属性
Person p=new Person; p.name=“aaa”; p.age=“18”; List list = new List(); list.add§; datagridview.DateSource=list; 上面是代码部分,下面是设置显示列名; 根据需要写对应的列名,接下来是绑定数据; ...
关于C#datagridview 打印问题
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)rn rn Graphics g = e.Graphics;rn //每一页的行数rn float MyLines = e.MarginBounds.Height / this.dataGridView1.Font.GetHeight(g);rn //打印时的行计数器rn int MyLineNumber = 0;rn //打印时的纵坐标rn float MyYPosition = 0;rn float MyMarginLeft = e.MarginBounds.Left;rn float MyMarginTop = e.MarginBounds.Top;rn //每一行要打印的文本rn string MyLine = "";rn while ((MyLineNumber < MyLines) && ((MyLine = MyReader.ReadLine()) != null))rn rn MyYPosition = MyMarginTop +rn MyLineNumber * this.dataGridView1.Font.GetHeight(g);rn g.DrawString(MyLine, this.dataGridView1.Font, new SolidBrush(Color.Black), MyMarginLeft, MyYPosition, new StringFormat());rn MyLineNumber++;rn rn if (MyLine != null)rn rn //发出下一次PrintPage事件rn e.HasMorePages = true;rn rn elsern rn e.HasMorePages = false;rn rn rnrn我这样写对吗 取datagridview所有的值取的对吗
C#DataGridView格式数字的问题
在DataGridView里有一列是数字字段,如果该值是零,就不显示,或显示为空,如何设置?rn0.00;0都不让它显示或为空。
c#datagridview 单元格字体颜色问题
现在有一个添加功能,添加信息重复时,不添加到datagridview列表中并且把datagridview单元格重复信息的字体变成红色,现在的问题是:比如我第一次添加时有重复,把字体变成了红色,第二次在添加这时没有重复,应该先把datagridview列表出现红色的字体先就成黑色,然后在添加。rn我在每次添加前先,datagridview.DefaultCellStyle.ForeColor=Color.Black;为什么不行?
c#DataGridView遇到的问题
我在做串口通信的时候,使用定时器从串口中读取信息并显示到DataGridView中,间隔300ms,过了一两个小时后,读取信息的频率变慢了。 追究原因,是因为DataGridView的数据量变大了,导致内存不够用。 做了一些改善,当数据量超过一定数量的时候,就删除第一条数据。 这样就不会导致内存不够用了。...
datagridview控件的显示内容
如何设计sql语句,让datagridview控件的显示内容的格式如下所示:rn[img=C:\Documents and Settings\Administrator\桌面\11.jpg][/img]
请教C++显示数据表的控件,类似于C#DataGridView功能
请问MFC里类似C#的DataGridView功能的控件是哪个,怎么找到?或者如何实现类似数据表的功能?
C#DataGridView中的问题
问题描述如下:rn假设在DataGridView中有3行数据,另外还有一个button,当我用鼠标点击第1行的时候,button可用,当我按Ctrl+鼠标点击第1行的时候,button不可用。rn请问怎么解决?谢谢
C#DataGridView数据刷新问题
1.给dataGridView添加一个刷新按钮rn[img=https://img-bbs.csdn.net/upload/201507/27/1437964224_161957.png][/img]rn2.往数据库中添加两条数据,点击刷新,界面正常显示。DataSource值为12rn[img=https://img-bbs.csdn.net/upload/201507/27/1437964316_429524.png][/img]rn3.继续添加两条数据。点击刷新之后,界面数据[color=#FF0000]没有刷新[/color],但是DataSource的值已经是14,rn[img=https://img-bbs.csdn.net/upload/201507/27/1437964699_643133.png][/img]rn[img=https://img-bbs.csdn.net/upload/201507/27/1437964617_394592.png][/img]rn4代码如下rn刷新代码rn private void buttonRefresh_Click(object sender, EventArgs e)rn rn ServiceReferenceIDG.WCFIDGClient wcf = new ServiceReferenceIDG.WCFIDGClient();rn WindowsFormsApplication.ServiceReferenceIDG.CLASS_INFO[] otherClassList;rn StringBuilder strSql = new StringBuilder();rn strSql.Append("OPERATE_DATE> to_date('");rn strSql.Append(dateTimeClass.ToString());rn strSql.Append("','yyyy-mm-dd hh24:mi:ss')");rn otherClassList=wcf.GetModelList(strSql.ToString());rn classStaticList.AddRange(otherClassList);rn dataGridViewClassInfo.DataSource = classStaticList;rnrn Maticsoft.Model.CLASS_INFO modelClassInfo = new Maticsoft.Model.CLASS_INFO();rn for (int i = 0; i < otherClassList.Length; i++)rn rn DateTime dt;rn if (DateTime.TryParse(otherClassList[i]._operate_date.ToString(), out dt))rn rn if (DateTime.Compare(dt, dateTimeClass) > 0)rn rn dateTimeClass = dt;rn rn rn rn rnrn初始化代码rn private void FillDateClassinfo()rn rn ServiceReferenceIDG.WCFIDGClient wcf = new ServiceReferenceIDG.WCFIDGClient();rn WindowsFormsApplication.ServiceReferenceIDG.CLASS_INFO[] classList=wcf.GetModelList(" ");rn rn dataGridViewClassInfo.DataSource = classList;rnrn classStaticList.AddRange(classList);rnrn //获取当前数据最大日期rn Maticsoft.Model.CLASS_INFO modelClassInfo = new Maticsoft.Model.CLASS_INFO();rn for (int i = 0; i < classList.Length; i++)rn rn DateTime dt;rn if(DateTime.TryParse(classList[i]._operate_date.ToString(),out dt))rn rn if (DateTime.Compare(dt, dateTimeClass) > 0)rn rn dateTimeClass = dt;rn rn rn rn
C#DataGridView排序问题
DataGridView1.DataSource=table1;rn点击了DataGridView1其中的一个列头进行了排序;rntable1.clear();rnColumn1.SortMode = DataGridViewColumnSortMode.NotSortable;rn这时又对表进行了新的查询数据;rnsda.fill(table1);rn这时DataGridView1还是排序状态;rn怎样取消这种状态,回到没有排序时的状态?
c#datagridview中的rowheader问题
看别人的datagridview都做的蛮好看的 尤其是rowheader是感觉突出来,用鼠标点击后不会凹下去,dgv数据似乎是凹进去的rn更重要的是不会像我的rowheader那样鼠标放上去始终有一个光标在rowheader那里闪啊闪
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法