10

コードを実行すると、dataGridView TopLeftHeaderCell にもコンボボックスがあります。どうすればそれを変更できますか?

これが私のコードです:

public void AddHeaders(DataGridView dataGridView)
{

        for (int i = 0; i < 4; i++)
        {
            // Create a ComboBox which will be host a column's cell
            ComboBox comboBoxHeaderCell = new ComboBox();
            comboBoxHeaderCell.DropDownStyle = ComboBoxStyle.DropDownList;
            comboBoxHeaderCell.Visible = true;

            foreach (KeyValuePair<string, string> label in _labels)
            {
                comboBoxHeaderCell.Items.Add(label.Key);
            }

            // Add the ComboBox to the header cell of the column
            dataGridView.Controls.Add(comboBoxHeaderCell);
            comboBoxHeaderCell.Location = dataGridView.GetCellDisplayRectangle(i, -1, true).Location;
            comboBoxHeaderCell.Size = dataGridView.Columns[0].HeaderCell.Size;
            comboBoxHeaderCell.Text = _labels[i].Key;

        }
}

ありがとうございました

4

2 に答える 2

1

あなたのコードで、

comboBoxHeaderCell.Location = dataGridView.GetCellDisplayRectangle(i, -1, true).Location;

は常に を返すため、 at の場所を に0,0入れます。そのため、これが表示されますComboBox0,0DataGridView

ここに画像の説明を入力

dataGridView1[i,0].size必要なサイズに使用できます

私は場所を探しています

私はそれを見つけることができませんでしたが、dataGridView1.Width - dataGridView1[1,0].Size.Width あなたができることは、幅を使用して、すべてのヘッダーの幅のサイズを削除してから、それらを1つずつ追加することです。

int xPos = dataGridView1.Width;

for (int i = 0; i < 4; i++)
{
   xPos -= dataGridView1[i, 0].Size.Width;
}
 ...
comboBoxHeaderCell.Size = dataGridView.Columns[0].HeaderCell.Size;
comboBoxHeaderCell.Location = new Point(xPos, 0);
xPos += comboBoxHeaderCell.Size.Width;
于 2013-08-01T08:58:57.300 に答える
0
    public void AddHeaders(DataGridView dataGridView)
 {

    for (int i = 0; i < 4; i++)
    {
        // Create a ComboBox which will be host a column's cell
        DataGridViewComboBoxCell comboBoxHeaderCell = new DataGridViewComboBoxCell();           


        foreach (KeyValuePair<string, string> label in _labels)
        {
            comboBoxHeaderCell.Items.Add(label.Key);
        }

        // Add the ComboBox to the header cell of the column
        dataGridView[i, 0] = comboBoxHeaderCell;
        comboBoxHeaderCell.Value =_labels[i].Key;


    }
}

これを試してみると問題が解決します。デフォルトでは表示されるため、必須ではない行を削除しました...そしてデフォルトではセルサイズがかかります...

于 2013-08-01T09:13:33.590 に答える