精华内容
下载资源
问答
  • 在DataGrid中使用下拉列表框设置焦点 在DataGrid中简单使用下拉列表框 作者:Tushar Ameta 翻译:秋枫 在DataGrid中使用下拉列表问题。这篇文章讲了如何在 System.Windows.Forms.DataGrid中切入使用ComboBox...

    在DataGrid中使用下拉列表框和设置焦点

    在DataGrid中简单使用下拉列表框

    作者:Tushar Ameta

    翻译:秋枫

    在DataGrid中使用下拉列表问题。这篇文章讲了如何在 System.Windows.Forms.DataGrid中切入使用ComboBox控件。不过原文不全,无法调试,在这里为了说清楚点,对原文作了一些修改,整篇文章主要包括三方面的内容。

    1. 在DataGrid中加入ComboBox列;

    2. 把在DataGrid中的修改保存到对应的网格;

    3. 设置DataGrid中网格的焦点。

    下面是整个源代码,一些功能可以看注释。

    using System;

    using System.Drawing;

    using System.Collections;

    using System.ComponentModel;

    using System.Windows.Forms;

    using System.Data;

    namespace DataGridTest

    {

    public class Form1 : System.Windows.Forms.Form

    {

    private System.Windows.Forms.DataGrid dgdFunctionArea;

    private DataTable dtblFunctionalArea;

    private System.Windows.Forms.Button buttonFocus;

    private System.ComponentModel.Container components = null;

    public Form1()

    {

    InitializeComponent();

    PopulateGrid();

    }

    protected override void Dispose( bool disposing )

    {

    if( disposing )

    {

    if (components != null)

    {

    components.Dispose();

    }

    }

    base.Dispose( disposing );

    }

    #region Windows 窗体设计器生成的代码

    private void InitializeComponent()

    {

    this.dgdFunctionArea = new System.Windows.Forms.DataGrid();

    this.buttonFocus = new System.Windows.Forms.Button();

    ((System.ComponentModel.ISupportInitialize)(this.dgdFunctionArea)).BeginInit();

    this.SuspendLayout();

    //

    // dgdFunctionArea

    //

    this.dgdFunctionArea.DataMember = "";

    this.dgdFunctionArea.HeaderForeColor = System.Drawing.SystemColors.ControlText;

    this.dgdFunctionArea.Location = new System.Drawing.Point(4, 8);

    this.dgdFunctionArea.Name = "dgdFunctionArea";

    this.dgdFunctionArea.Size = new System.Drawing.Size(316, 168);

    this.dgdFunctionArea.TabIndex = 0;

    //

    // buttonFocus

    //

    this.buttonFocus.Location = new System.Drawing.Point(232, 188);

    this.buttonFocus.Name = "buttonFocus";

    this.buttonFocus.Size = new System.Drawing.Size(84, 23);

    this.buttonFocus.TabIndex = 1;

    this.buttonFocus.Text = "获取焦点";

    this.buttonFocus.Click += new System.EventHandler(this.buttonFocus_Click);

    //

    // Form1

    //

    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

    this.ClientSize = new System.Drawing.Size(332, 217);

    this.Controls.Add(this.buttonFocus);

    this.Controls.Add(this.dgdFunctionArea);

    this.Name = "Form1";

    this.Text = "Form1";

    ((System.ComponentModel.ISupportInitialize)(this.dgdFunctionArea)).EndInit();

    this.ResumeLayout(false);

    }

    #endregion

    /// <summary>

    /// 应用程序的主入口点。

    /// </summary> 

    展开全文
  • 在DataGrid中使用下拉列表框设置焦点[翻译]

    万次阅读 热门讨论 2004-05-31 16:50:00
    在DataGrid中简单使用下拉列表框 作者:Tushar Ameta翻译:郑佐 在DataGrid中使用下拉列表问题。这篇文章讲了如何在 System.Windows.Forms.DataGrid中切入使用ComboBox控件。不过原文不全,无法调试,在这里为了说...

    DataGrid中简单使用下拉列表框  

    作者:Tushar Ameta

    翻译:郑佐

         DataGrid中使用下拉列表问题。这篇文章讲了如何在 System.Windows.Forms.DataGrid中切入使用ComboBox控件。不过原文不全,无法调试,在这里为了说清楚点,对原文作了一些修改,整篇文章主要包括三方面的内容。 

    1.   DataGrid中加入ComboBox列;
    2.   把在DataGrid中的修改保存到对应的网格;
    3.   设置DataGrid中网格的焦点。 

     下面是整个源代码,一些功能可以看注释。  

    using System;

    using System.Drawing;

    using System.Collections;

    using System.ComponentModel;

    using System.Windows.Forms;

    using System.Data;

     

    namespace DataGridTest

    {

         public class Form1 : System.Windows.Forms.Form

         {

             private System.Windows.Forms.DataGrid dgdFunctionArea;

             private DataTable dtblFunctionalArea;

             private System.Windows.Forms.Button buttonFocus;

             private System.ComponentModel.Container components = null;

     

             public Form1()

             {

                  InitializeComponent();

                  PopulateGrid();

             }

     

             protected override void Dispose( bool disposing )

             {

                  if( disposing )

                  {

                       if (components != null)

                       {

                           components.Dispose();

                       }

                  }

                  base.Dispose( disposing );

             }

     

             #region Windows 窗体设计器生成的代码

             private void InitializeComponent()

             {

                  this.dgdFunctionArea = new System.Windows.Forms.DataGrid();

                  this.buttonFocus = new System.Windows.Forms.Button();

                  ((System.ComponentModel.ISupportInitialize)(this.dgdFunctionArea)).BeginInit();

                  this.SuspendLayout();

                  //

                  // dgdFunctionArea

                  //

                  this.dgdFunctionArea.DataMember = "";

                  this.dgdFunctionArea.HeaderForeColor = System.Drawing.SystemColors.ControlText;

                  this.dgdFunctionArea.Location = new System.Drawing.Point(4, 8);

                  this.dgdFunctionArea.Name = "dgdFunctionArea";

                  this.dgdFunctionArea.Size = new System.Drawing.Size(316, 168);

                  this.dgdFunctionArea.TabIndex = 0;

                  //

                  // buttonFocus

                  //

                  this.buttonFocus.Location = new System.Drawing.Point(232, 188);

                  this.buttonFocus.Name = "buttonFocus";

                  this.buttonFocus.Size = new System.Drawing.Size(84, 23);

                  this.buttonFocus.TabIndex = 1;

                  this.buttonFocus.Text = "获取焦点";

                  this.buttonFocus.Click += new System.EventHandler(this.buttonFocus_Click);

                  //

                  // Form1

                  //

                  this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

                  this.ClientSize = new System.Drawing.Size(332, 217);

                  this.Controls.Add(this.buttonFocus);

                  this.Controls.Add(this.dgdFunctionArea);

                  this.Name = "Form1";

                  this.Text = "Form1";

                  ((System.ComponentModel.ISupportInitialize)(this.dgdFunctionArea)).EndInit();

                  this.ResumeLayout(false);

     

             }

             #endregion

     

             /// <summary>

             /// 应用程序的主入口点。

             /// </summary>

             [STAThread]

             static void Main()

             {

                  Application.Run(new Form1());

             }

             //初始化DataGrid

             private void PopulateGrid()

             {

                  //创建一个DataTable对象,包括四列,前三列为String,最后一列为Boolean。

                  dtblFunctionalArea  = new DataTable ("FunctionArea");

                  string[] arrstrFunctionalArea = new string [3]{"Functional Area","Min","Max"};

                  DataColumn dtCol = null;

                  //创建String列      

                  for(int i=0; i< 3;i++)

                  {   

                       dtCol = new DataColumn(arrstrFunctionalArea[i]);

                       dtCol.DataType  = Type.GetType("System.String");

                       dtCol.DefaultValue = "";

                       dtblFunctionalArea.Columns.Add(dtCol);              

                  }    

     

                  //创建Boolean列,用CheckedBox来显示。   

                  DataColumn dtcCheck = new DataColumn("IsMandatory");

                  dtcCheck.DataType = System.Type.GetType("System.Boolean");

                  dtcCheck.DefaultValue = false;

                  dtblFunctionalArea.Columns.Add(dtcCheck);

     

                  //把表绑定到DataGrid

                  dgdFunctionArea.DataSource    = dtblFunctionalArea; 

     

                  //为DataGrid加载DataGridTableStyle样式

                  if(!dgdFunctionArea.TableStyles.Contains("FunctionArea"))

                  {

                       DataGridTableStyle dgdtblStyle = new DataGridTableStyle();

                       dgdtblStyle.MappingName = dtblFunctionalArea.TableName;

                       dgdFunctionArea.TableStyles.Add(dgdtblStyle);

                       dgdtblStyle.RowHeadersVisible = false;

                       dgdtblStyle.HeaderBackColor = Color.LightSteelBlue;

                       dgdtblStyle.AllowSorting  = false;

                       dgdtblStyle.HeaderBackColor = Color.FromArgb(8,36,107);

                       dgdtblStyle.RowHeadersVisible = false;

                       dgdtblStyle.HeaderForeColor = Color.White;

                       dgdtblStyle.HeaderFont = new System.Drawing.Font("Microsoft Sans Serif", 9F, 

                           System.Drawing.FontStyle.Bold,

                           System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));

                       dgdtblStyle.GridLineColor = Color.DarkGray;

                       dgdtblStyle.PreferredRowHeight = 22;

                       dgdFunctionArea.BackgroundColor = Color.White; 

     

                       //设置列的宽度 

                       GridColumnStylesCollection colStyle = dgdFunctionArea.TableStyles[0].GridColumnStyles;

                       colStyle[0].Width = 100;

                       colStyle[1].Width = 50;

                       colStyle[2].Width = 50;

                       colStyle[3].Width = 80;

                  }

     

                  DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[0];

                  ComboBox cmbFunctionArea = new ComboBox();

                  cmbFunctionArea.Items.AddRange(new object[]{"选项一","选项二","选项三"});

                  cmbFunctionArea.Cursor = Cursors.Arrow;

                  cmbFunctionArea.DropDownStyle= ComboBoxStyle.DropDownList;

                  cmbFunctionArea.Dock = DockStyle.Fill;

                  //在选定项发生更改并且提交了该更改后发生

                  cmbFunctionArea.SelectionChangeCommitted += new EventHandler(cmbFunctionArea_SelectionChangeCommitted);

                  //把ComboBox添加到DataGridTableStyle的第一列

                  dgtb.TextBox.Controls.Add(cmbFunctionArea);            

     

             }

             //设置焦点模拟

             private void GetFocus(int row,int col)

             {

                  //先把焦点移动到DataGrid

                  this.dgdFunctionArea.Focus();  

                  //把焦点移动到DataGridCell

                  DataGridCell dgc = new DataGridCell(row,col);

                  this.dgdFunctionArea.CurrentCell = dgc;

                  DataGridTextBoxColumn dgtb = (DataGridTextBoxColumn)dgdFunctionArea.TableStyles[0].GridColumnStyles[col];

                  //设置焦点

                  dgtb.TextBox.Focus();

     

             }         

             //把Combobox上修改的数据提交到当前的网格

             private void cmbFunctionArea_SelectionChangeCommitted(object sender, EventArgs e)

             {

                  this.dgdFunctionArea[this.dgdFunctionArea.CurrentCell] = ((ComboBox)sender).SelectedItem.ToString();

             }       

             //设置新的焦点

             private void buttonFocus_Click(object sender, System.EventArgs e)

             {

                  //焦点模拟,这里设置第三行第一列

                  GetFocus(2,0);

             }

         }

    }

     下面是测试界面:

              总结,这里是通过DataGridTextBoxColumn.TextBox.Controls.Add方法实现在列中添加ComboBox控件;对于数据的保存是使用ComboBox.SelectionChangeCommitted事件来完成;设置焦点是通过DataGridTextBoxColumn.TextBox.Focus方法来实现。另外通过这个方法也可以添加DateTimePicker等类似的控件。

     

    展开全文
  • LabVIEW:2015在使用多列列表框(Multicolumn Listbox)时,有时不同列显示的内容长度不一致,为了显示更加美观,并节省界面显示空间,需要实现多列列表框的行高和列宽的自适应调整,那么如何实现呢?行高自适应调整...
    • LabVIEW:2015


    在使用多列列表框(Multicolumn Listbox)时,有时不同列显示的内容长度不一致,为了显示更加美观,并节省界面显示空间,需要实现多列列表框的行高和列宽的自适应调整,那么如何实现呢?

    行高自适应调整

    行高自适应调整无需编写程式,只需设置即可,行高的调整主要是针对多行输入,那么首先需要设置“允许多行输入”,如下图所示:

    1ad4a3019fb3882e60e0fc15f98f5ffe.png

    其次要勾选”自动调整行高”,如下图所示:

    a498b402cc3c85edb10dc2153d5cffd1.png

    完成上述设置之后,即可实现行高自适应调整了,效果如下图所示:

    27a76b5dd7372568575f9986d3f5cb2a.gif

    当然行高自适应调整也可以参考下面的方法自行编码实现,这里不再说明,感兴趣请自行尝试。

    列宽自适应调整

    列宽自适应调整并没有现成的属性可以设置,需要自行编码实现,很自然的想法是能获取输入内容的宽度,那么可以通过Get Text Rect.vi来获取,然后设置当前单元格或列的宽度,代码实现如下图所示:

    b6e7af333a004286e014d9116377a178.png

    运行效果如下图所示:

    4d2f719f195945d4c80b62b4e7a9dcca.gif

    欢迎扫码关注,在看、转发并分享朋友圈,您的支持是我不断更新的动力!

    62275738b7026e93ed1371c4104cc35c.png

    展开全文
  • 在打开的界面中切换到“索引”页签中,在索引中输入“stylesheet”关键字,在搜索结果列表中选择第一个,就会看到右侧界面中会展示当前检索的内容信息,如下图: 在上面我们可以关注两个内容,“Qt Style ...

    先告诉大家如何查看Qt中都支持那些样式,打开Qt助手工具,打开的途径有很多种,我比较喜欢使用Qt助手原生的程序。

    在打开的界面中切换到“索引”页签中,在索引框中输入“stylesheet”关键字,在搜索结果列表中选择第一个,就会看到右侧界面中会展示当前检索的内容信息,如下图:

    在上面我们可以关注两个内容,“Qt Style Sheets Reference” 和“Qt Style Sheets Examples”,

    在这两个内容中你可以看到Qt中提供了那些样式接口和Qt给提供的例子内容,大家可以根据自己的需要进行参照。

    好了,我们开始今天的主题内容,我们要知道QComboBox除了表面看到的一个类型于按钮的显示区域外,还有一个隐藏的显示区域下拉列表,而下拉列表的内容是一个QAbstractItemView相关的内容,所以我们要调整下位列表的内容,出发点就可以从QAbstractItemView来修改,而对于ItemView相关的调整,我们有两种方式调整,一种是直接调整styleSheet的内容,另一种就是使用Delegate。

    使用Delegate来调整的话,对于ComboBox来说有点太才小用了,这里提供一种简单的调用方式。

    直接使用上面的“Qt Style Sheets Examples”链接跳转到Demo内容列表中,我们选择“Customizing QComboBox”,会直接跳转到Qt提供的基础样式内容,这些基础信息只能修改ComboBox的表面内容,对于下拉列表的内容我们需要划动一下鼠标,向下看一段内容,你会发现如下的样式内容:

     QComboBox QAbstractItemView {
          border: 2px solid darkgray;
          selection-background-color: lightgray;
      }
     
    把上面的内容放到Designer放到一个控件中运行效果如下:
    

    我们会发现,这些相关内容中只可以调整我们选择的颜色,对于选中项的虚线,行高,都不能调整吗?

    答案是肯定可以的,首先来调整虚线的问题,我们只需要在上面的样式表中加入:

    outline:0px;

    行高怎么设置呢?再网上找相关资料时,你一定找到过下面的语句:

    QComboBox QAbstractItemView::item{height: 50px;}

    但设置后其实时没有起作用的,我们只需要给当前的ComboBox设置一个代理就可以上高度起作用了,代码内容如下:

    QComboBox *pComboBox = new QComboBox;
    
    QStyledItemDelegate *delegate = new QStyledItemDelegate();
    pComboBox ->setItemDelegate(delegate);

    设置完成后,上面的代码确实正常了,但是你会发现你原来生效的选中颜色已经被重置成Qt默认的样式了,其实效果还是能接受的,不过为了更加自我一些,你只需要加上下面的样式内容:

    QComboBox QAbstractItemView::item:selected{background-color: #ccefe0;}

    这样你会发现你基本已经接近你想要的情况了。

    PS: 附送样式,在无意间调整出来的,样式内容如下:

     QComboBox QAbstractItemView {
          border: 2px solid darkgray;
          selection-background-color: lightgray;
    
          padding-top:4px;padding-bottom:4px;
      }

    padding,内容的加入会让你的选项内容进行相应的缩进处理,效果就不贴图了,大家自己去体验一下具体的效果吧。

     

     

     

    展开全文
  • VS2010 下 MFC下拉列表框的用法

    千次阅读 2018-06-26 16:30:36
    最近在写一个串口程序,需要将下拉列表框的数据全部显示,怎么设置都不对,最后终于找到了设置方法:二、如何控制Combo Box的下拉长度1,首先要知道两点:一、那就是在设计界面里,点击一下Combo Box的下拉箭头,...
  • 安卓搭框架基本设置

    2018-10-16 10:58:47
    安卓搭框架基本设置基本配置配置自定义打包名称新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左...
  • 一、将选择变为圆形,type=“checkbox”改为type=“radio” 单选用radio(圆形) 多选用checkbox(方形) 二、label:当用户点击label标签中的文本时,浏览器就会自动将焦点转到和该标签相关联的控件上(也就是说...
  • C#中为DataGrid添加下拉列表框本文将介绍如何在 System.Windows.Forms.DataGrid中切入使用ComboBox控件,主要包括三方面的内容。  1. 在DataGrid中加入ComboBox列;  2. 把在DataGrid中的修改保存到对应的...
  • 有很多同学在ArcGIS中设置完地图符号或标注等,发现系统默认符号的大小是...1.在内容列表中右键单击数据,然后单击【属性】。 2.单击【常规】选项卡。 3.在【参考比例】输入框中输入值或者从下拉列表中选择值。
  • C#中为DataGrid添加下拉列表框 本文将介绍如何在 System.Windows.Forms.DataGrid中切入使用ComboBox控件,主要包括三方面的内容。 1. 在DataGrid中加入ComboBox列; 2. 把在DataGrid中的修改保存到对应的网格...
  • 当表格数据较多时,制作出的图表显得比较复杂,如何通过列表选择,来动态展示的项目数据,这样更加直观、清晰呢?思路:表格表头复制——控件制作与设置——控件数据制作——图表插入——图表优化设置。步骤:1、...
  • 本文将介绍如何在 System.Windows.Forms.DataGrid中切入使用ComboBox控件,主要包括三方面的内容。  1. 在DataGrid中加入ComboBox列;  2. 把在DataGrid中的修改保存到对应的网格;  3. 设置DataGrid中网格...
  • 本文将介绍如何在 System.Windows.Forms.DataGrid中切入使用ComboBox控件,主要包括三方面的内容。  1. 在DataGrid中加入ComboBox列;  2. 把在DataGrid中的修改保存到对应的网格;    3. 设置DataGrid中...
  • 本文将介绍如何在 System.Windows.Forms.DataGrid中切入使用ComboBox控件,主要包括三方面的内容。 1. 在DataGrid中加入ComboBox列; 2. 把在DataGrid中的修改保存到对应的网格; 3. 设置DataGrid中网格的焦点...
  • 当表格数据较多时,制作出的图表显得比较复杂,如何通过列表选择,来动态展示的项目数据,这样更加直观、清晰呢?思路:表格表头复制——控件制作与设置——控件数据制作——图表插入——图表优化设置。步骤:1、...
  • MySQL窗口函数框架设置(Frame子句MySQL窗口函数框架设置(Frame子句)示例---某商店的商品订单默认框架框架基本单位(frame_units)框架范围(frame_extent)功能快捷键合理的创建标题,有助于目录的生成如何改变文本的...
  • 本文将介绍如何在 system.windows.forms.datagrid中切入使用combobox控件,主要包括三方面的内容。 1. 在datagrid中加入combobox列; 2. 把在datagrid中的修改保存到对应的网格; 3. 设置datagrid中网格的焦点。 ...
  • 在DataGrid中使用下拉列表问题。这篇文章讲了如何在 System.Windows.Forms.DataGrid中切入使用ComboBox控件。不过原文不全,无法调试,在这里为了说清楚点,对原文作了一些修改,整篇文章主要包括三方面的内容。1....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 411
精华内容 164
关键字:

列表框如何设置列表内容