标签: datagridviewcolumn

DataGridviewComboBox需要2次单击才能显示项目列表

可能重复:
单击一次打开下拉列表(在数据网格视图中)

我们有一个DataGridView,其中一列是具有DropDownButton样式的ComboBox.DataGridView处于FullRowSelect模式.假设我有5行,并在DataGridView中选择了行0.

我想从-say的ComboBox中选择一个项目例如第2行,因此我单击ComboBox的小箭头.当我这样做时,首先,选择DataGridView的第2行.ComboBox尚未打开.只有第二次单击才能打开ComboBox.

事实上,它过去需要3次点击,但后来我们重载了CellMouseDown来做:

myDataGridView.ClearSelection();
myDataGridView.Rows[e.RowIndex].Selected = true;
Run Code Online (Sandbox Code Playgroud)

有了这个,我们只有2次点击.有没有办法只显示一次单击显示ComboBox项目?

编辑:我还应该提一下,如果我单击ComboBox本身,而不是单击ComboBox的小箭头,只需3次单击即可显示ComboBox项目!

datagridview datagridviewcolumn datagridviewcombobox datagridviewcomboboxcell

4
推荐指数
1
解决办法
7443
查看次数

DataGridView标题在将其设置为MiddleCenter后稍微向左对齐

我在C#项目中为DataGridView设置以下属性...

sampleDataGridView.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
sampleDataGridView.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
Run Code Online (Sandbox Code Playgroud)

但我注意到标题的(即标题单元格中的文本由于某种原因略微向左偏移..数据行完全对齐在中心虽然...

是什么导致这个?

c# datagridview datagridviewcolumn c#-4.0

4
推荐指数
3
解决办法
3679
查看次数

Datagridview列宽

在此输入图像描述我在Winform中遇到与datagridview相关的问题.

我的左侧面板中有一个表名列表.当我点击表格I时,在右侧面板中显示表格内容.我通过获取数据并将数据源分配给dgv来显示datagridview中的数据.

我正在设置以下属性为dgv.

dgTemp.Dock = DockStyle.Fill;
dgTemp.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dgTemp.AutoSize = true;
dgTemp.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
dgTemp.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
dgTemp.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
dgTemp.ReadOnly = true;
dgTemp.AutoGenerateColumns = true;
dgTemp.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dgTemp.AllowUserToAddRows = false;
Run Code Online (Sandbox Code Playgroud)

我的问题是我分配给dgv的数据源中可以有任意数量的列.因此,如果列数很少(例如1或2),则dgv大小非常小,右侧的空白区域看起来非常难看.我不能使用auto autosizecolumnmode来,fill因为当有更多的列时,所有列都会缩小并且扩展列不会给我滚动到底部

所以我的要求是

  1. 应填写datagridview中的所有空格.(应覆盖所有区域)
  2. 当有更多列时,应该出现滚动,因此它可以提供更好的外观

有什么事件或属性我可以使用?

谢谢你的期待.

datagridview datagridviewcolumn winforms

4
推荐指数
1
解决办法
3365
查看次数

在列中的DataGridView中搜索值

我希望用户能够在DataGridView(dgv)的列中搜索数字.dgv可以保存很多记录.每条记录都有一个项目编号.所以我希望用户能够在项目编号列中搜索项目编号.我的列是:ProjectID(不可见); 图像(无headertext); 项目编号; 项目名; 公司; 联系.

这是我的代码:

private void btnSearch_Click(object sender, EventArgs e)
{
    string searchValue = textBox1.Text;
    int rowIndex = -1;

    dgvProjects.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    try
    {
        foreach (DataGridViewRow row in dgvProjects.Rows)
        {
            if (row.Cells[row.Index].Value.ToString().Equals(searchValue))
            {
                rowIndex = row.Index;
                dgvProjects.Rows[row.Index].Selected = true;
                break;
            }
        }
    }
    catch (Exception exc)
    {
        MessageBox.Show(exc.Message);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题#1:到目前为止它做了什么:用户在TextBox1中键入项目编号.当他/她单击按钮时,代码会在行中搜索此字符串,当找到项目编号时,该行将被选中.它工作正常,但只有一次.当我想搜索其他项目编号时,没有任何反应.

问题2:我认为这可以通过仅搜索列项目名称的值以更好的方式完成.但是我该如何正确地做到这一点?

我用来搜索的代码来自这个答案

c# datagridview datagridviewcolumn winforms

4
推荐指数
2
解决办法
11万
查看次数

如何从winforms c#中的datagridview中删除行指示器列

请参阅随附的屏幕截图。如何避免/删除标记为红色的额外列?基本上,此列充当行指示器。 在此处输入图片说明

datagridview datagridviewcolumn winforms

4
推荐指数
1
解决办法
3156
查看次数

添加datagridviewcolumn属性设计时

我有这个问题,我创建了自己的datagridviewcolumn,我希望添加一些你可以在设计时编辑中更改的属性...这是我的代码:

private int nMaxLength;
[Description("Fondoscala valore"), Category("Sea")]
public int MaxLength
{
    get { return nMaxLength; }
    set { nMaxLength = value; }
}
Run Code Online (Sandbox Code Playgroud)

实际上没问题,当你打开列编辑器时,你会在Sea类别下看到这个属性,你可以改变,但是当你改变它时,如果你去.Designer.cs文件,你会看到MaxLength值为0 ..没有变化......有什么问题?提前致谢

c# datagridview properties datagridviewcolumn

3
推荐指数
1
解决办法
1867
查看次数

在属性窗口中更改后,自定义属性将不会保存

我为DataGridView创建了一个自定义列,原因是我想在列中添加属性(类型).我右键单击DataGridView并选择"编辑列...".然后,当我选择我自定义列类型的列时,我可以编辑属性,但是如果我在编辑后单击"确定",然后再次转到"编辑列...",我分配给我的属性的值离开了.

这是我的代码:

public class CustomColumn : DataGridViewColumn
{
    [DisplayName("Type")]
    [Category("Custom Property")]
    public String type { get; set; }

    public CustomColumn()
        : base(new DataGridViewTextBoxCell())
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

和属性窗口的图像:

属性窗口的图像http://s8.postimage.org/fzrke75gl/Capture.png

有人可以告诉我我做错了什么,或者我需要添加什么,这样当我更改属性窗口中的值时,该值是否已分配给属性?

c# datagridviewcolumn

3
推荐指数
1
解决办法
1284
查看次数

如何检测特定datagridview列的单元格值已更改?-VB.NET

我想检测特定列的单元格值已更改。

我的Datagridview名称是DGV_Products6列。

Product ID | Descriptions | Quantity | Unit Price | Discount | Amount
G 01       |  Gallon #01  |    2     |   1850     |    100   |  3600 
G 02       |  Gallon #02  |    1     |   1850     |    50    |  1800
Run Code Online (Sandbox Code Playgroud)

我只想在Quantity column单元格值更改时触发一些代码,而在值更改时不触发discount column。我该如何完成任务?目前的代码,我尝试过的是;

 Private Sub DGV_Products_CellValueChanged(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV_Products.CellValueChanged

    If DGV_Products.Rows.Count > 0 Then

        Dim Quantity As Integer = CInt(DGV_Products.CurrentRow.Cells(2).Value)
        Dim UnitProce As Integer = CInt(DGV_Products.CurrentRow.Cells(3).Value)
        Dim DiscountPrice As …
Run Code Online (Sandbox Code Playgroud)

vb.net datagridview datagridviewcolumn

3
推荐指数
1
解决办法
2万
查看次数

用于在DataTable的DataColumn中保存图像的DataType

我有一个看似简单的问题,我已经动态创建了一个DataTable,并且我很好地添加了行.但是我有一个列,它将有一个标志,这是一个图像.我已经将两个标志(.png图像)导入到项目资源中.但是我无法将列的DataType设置为System.Type.Bitmap,因为DataColumn不支持,因为这里可以看到.我见过一个解决方案,说我将DataType设置如下

dataColumn = new DataColumn("Flag");
dataColumn.DataType = System.Type.GetType("System.Byte[]"); //Replacing System.Byte[] with System.Type.Bitmap throws Type Exception
dataTable.Columns.Add(dataColumn);
Run Code Online (Sandbox Code Playgroud)

然而,抛出一个Exception声明编译器期望Byte []但得到了Bitmap.

以下是我向DataTable添加行的方法

row["Part Number"] = part;
row["Module Name"] = populator.LookUpAValue(moduleSql);
row["Flag"] = Properties.Resources.Yellow_Flag;
row["Location"] = populator.LookUpAValue(nameSql);
dataTable.Rows.Add(row);
Run Code Online (Sandbox Code Playgroud)

这是我的问题,我将DataType保存为图像列,因此当我显示到DataGridView时,我看到显示的图像.如果不在DataGridView上设置DataType而不是显示图像,我会得到文本 System.Drawing.Bitmap

c# datatable datagridview datagridviewcolumn datacolumn

3
推荐指数
2
解决办法
1万
查看次数

DataGridViewCheckBox 行返回 null,直到单击复选框

我创建了一个带有 DataGridView 的 Windows 窗体,并添加了一列,其中每行包含一个复选框。将 DataTable 绑定到 DataGridView,然后添加 DataGridViewCheckBoxColumn。

当我的表单关闭时,我尝试获取每行中复选框的值,但如果用户在任何时候都没有选中一行中的复选框,那么当我认为应该返回 false 时,程序只会将其值返回为 null (未检查)。这是为什么?我可以做什么来解决它?

//add checkbox column
DataGridViewCheckBoxColumn mCheckboxColumn = new DataGridViewCheckBoxColumn();
mCheckboxColumn.Name = "chk";
mCheckboxColumn.HeaderText = "checkbox";       
dgv.Columns.Add(mCheckboxColumn);



//looping through each row
foreach (DataGridViewRow row in dgv.Rows)
{
     if ((bool)row.Cells["chk"].Value == true)
     {
          MessageBox.Show("checked!");
     }
}
Run Code Online (Sandbox Code Playgroud)

c# datagridview datagridviewcheckboxcell datagridviewcolumn winforms

2
推荐指数
1
解决办法
2135
查看次数