面板水平滚动在datagridview单元格大小更改时重置为0

时间:2017-10-22 07:26:29

标签: c# winforms datagridview panel

我有一个datagridview和一个面板。滚动数据网格视图时滚动面板。 该面板包含与datagridview中列数相同数量的文本框。 我的问题是当我调整datagridview列的大小时,我也调整了它上面的文本框的大小。这工作正常,但面板水平滚动到原点。 如何防止面板水平滚动重置为原点?

private void dataGridView1_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
{
    try
    {
        TextBox txt;
        int x = 40;
        panel1.AutoScrollPosition = new Point(dataGridView1.HorizontalScrollingOffset,0);
        panel1.HorizontalScroll.Value = dataGridView1.HorizontalScrollingOffset;
        IOrderedEnumerable<DataGridViewColumn> coll= from DataGridViewColumn doc in dataGridView1.Columns orderby doc.DisplayIndex select doc;

        foreach (DataGridViewColumn dc in coll)
        {
            if (dc.Visible)
            {
                txt = (TextBox)panel1.Controls["txt" + dc.Name];
                txt.Width = dc.Width - 5;
                txt.Location = new Point(x, dataGridView1.Location.Y - 25);
                x += txt.Width + 5;
            }
        }
    }
    catch { }
}

0 个答案:

没有答案