0
我有一個datagridview,在這個datagridview上面我設置了一個flowlayoutpanel,我想在其中用戶可以在某些searchterms中鍵入的內容以編程方式添加一些文本框。在datagridviewcolomns上方設置搜索文本框
我坐列的大小從DataGrid:
int size = dataGridView1.Columns[i].Width;
和GIF文本框大小相同:
TextBox box = new TextBox();
box.Width = size - 1;
但文本框不匹配的columnsize的大小。 我看不出有什麼不順心
代碼:
public partial class DataTableFormSearch : Form
{
public DataTableFormSearch()
{
InitializeComponent();
dataGridView1.DataSource = createTable();
fillPanelWithSearch();
}
public DataTable createTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("TestCol1", typeof(String));
dt.Columns.Add("TestCol2", typeof(String));
dt.Columns.Add("TestCol3", typeof(String));
dt.Columns.Add("TestCol4", typeof(String));
dt.Columns.Add("TestCol5", typeof(String));
return dt;
}
public void fillPanelWithSearch()
{
flowLayoutPanel1.AutoSize = false;
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
TextBox box = new TextBox();
box.Margin = Padding.Empty;
this.flowLayoutPanel1.Controls.Add(box);
}
resizeControls();
}
public void resizeControls()
{
if (flowLayoutPanel1.Controls.Count > 0)
{
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
int size = dataGridView1.Columns[i].Width;
flowLayoutPanel1.Controls[i].Width = size;
}
}
}
private void DataTableFormSearch_SizeChanged(object sender, EventArgs e)
{
resizeControls();
}
}
時,SizeChanged將的事件triggerd框更改爲正確的大小,而不是在對話框彈出
的colomns是SAM e尺碼,所以無論我在這一刻是否是正確的colomn。 – Cageman
Nop,在你的方式中,文本框應該大於datagridview,但它們不是(因爲我沒有權限添加圖像,所以我把它保存在這裏):http://imageshack.com/a/img28/2853/ hek0.png 但是我已經對我的程序做了一些改變,所以當它調整框的大小越來越小時,當我改變窗口的時候,所有的框都被設置在正確的列上方,以便代碼起作用。 *編輯上面的代碼* – Cageman
你是否在構造函數中調用該方法?如果是這樣,不要。改用OnLoad()覆蓋方法。 – LarsTech