C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■83864 / 1階層)  DataGridViewコンボボックスの幅について
□投稿者/ 魔界の仮面弁士 (1262回)-(2017/04/17(Mon) 17:46:39)
No83863 (ふた さん) に返信
> グリッドのEditingControlShowingイベント時に、
> DataGridViewComboBoxEditingControlが既にセル幅より大きかったので、
> この段階で幅を変更しましたが反映されませんでした。

こちらでも試してみました。確かに反映されませんね。

根本的解決では無いですが、ひとまず下記のようにしてみたところ
幅が同期されているようです。確実な方法と言えるかは自信が無いですが。


DataGridView dgvTest;
protected override void OnLoad(EventArgs e)
{
 base.OnLoad(e);

 dgvTest = new DataGridView() { Name = "dgv" };
 dgvTest.Dock = DockStyle.Fill;
 dgvTest.EditMode = DataGridViewEditMode.EditOnEnter;
 Controls.Add(dgvTest);

 dgvTest.AutoGenerateColumns = false;

 dgvTest.RowCount = 100;
 dgvTest.ColumnCount = 4;

 var cmb1 = new DataGridViewComboBoxCell();
 cmb1.Items.AddRange("1", "2", "3");
 dgvTest[0, 0] = cmb1;

 var cmb2 = new DataGridViewComboBoxCell();
 cmb2.Items.AddRange("A", "B", "C");
 dgvTest[0, 1] = cmb2;

 
 Action act = delegate
 {
  var cmb = dgvTest.EditingControl as DataGridViewComboBoxEditingControl;
  if (cmb != null)
  {
   int w = cmb.EditingControlDataGridView.Columns[0].Width;
   if (cmb.DropDownWidth != w)
   {
    BeginInvoke(new Action(() => cmb.DropDownWidth = w));
   }
  }
 };
 dgvTest.EditingControlShowing += delegate { act(); };
 dgvTest.ColumnWidthChanged += delegate { act(); };
 //dgvTest.CellMouseDown += delegate { act(); };
 //dgvTest.CellContentClick += delegate { act(); };
}
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←DataGridViewコンボボックスの幅について /ふた →Re[2]: DataGridViewコンボボックスの幅について /ふた
 
上記関連ツリー

DataGridViewコンボボックスの幅について / ふた (17/04/17(Mon) 11:44) #83863
DataGridViewコンボボックスの幅について / 魔界の仮面弁士 (17/04/17(Mon) 17:46) #83864 ←Now
  └ Re[2]: DataGridViewコンボボックスの幅について / ふた (17/04/18(Tue) 09:33) #83866 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信