文本框根据datagridview中选择的列标题移动

时间:2013-11-11 10:37:01

标签: c# winforms datagridview

我有一个Datagridview,其中有一些列Date, Description , Module, Name等等。Datagridview我有一个文本框和标签(搜索),用于搜索所选列的值。

我的问题是,我想根据所选列移动标签(搜索)和文本框。例如,如果我选择描述列,标签(搜索)应该在日期列中,文本框应该在描述列中,文本框宽度应与列宽相同。如果选择零索引列(日期),则文本框应位于“日期”列中,而“标签”(搜索)应位于第一个索引列。

我陷入了这个问题,我不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

我发布了一个我在我的项目中实现的示例代码...这里的按钮点击事件我正在移动一些文本框,datagridview向下按下每个按钮点击...同样的方式你使你的搜索文本框和标签位置动态... 例如..假设您的第一列(日期)从位置10,20开始,然后在选择描述列时将标签的位置设置为(10,20)..同样方式继续进行其他选项。 ..

见下面的代码可能会给出一些想法...

public  void btn_add_Click(object sender, System.EventArgs e) 
    {

            if (sender == btn_mc_add)
            {

                dgv_mc.Rows.Add();
                int count = dgv_mc.Rows[0].Height;
                int count1 = dgv_mc.Rows.Count;
                k = k + count;
                GBOX_MC.Height = count * count1 + 44;
                dgv_mc.Height = count * count1 + 44;
                GBOX_MW.Location = new Point(5, 141 + k - 44);
                lbl_mw.Location = new Point(6, 90 + k - 22);
                btn_mw_add.Location = new Point(700, (90 + k - 22));
                btn_mw_delete.Location = new Point(770, (90 + k - 22));
                GBOX_SCROLL_NOW.Location = new Point(5, 210 + k + l + 22);
                lbl_scroll_now.Location = new Point(6, 185 + k + l + 22);
                btn_scroll_now_add.Location = new Point(700, 185 + k + l + 22);
                btn_scroll_now_delete.Location = new Point(770, 185 + k + l + 22);

            }


            else if (sender == btn_mw_add)
            {
                dgv_mw.Rows.Add();
                int count = dgv_mw.Rows[0].Height;
                int count1 = dgv_mw.Rows.Count;
                l = l + count;
                GBOX_MW.Height = count * count1 + 44;
                dgv_mw.Height = count * count1 + 44;
                GBOX_SCROLL_NOW.Location = new Point(5, 210 + l + k);
                lbl_scroll_now.Location = new Point(6, 185 + l + k);
                btn_scroll_now_add.Location = new Point(700, 185 + l + k);
                btn_scroll_now_delete.Location = new Point(770, 185 + l + k);
            }

}

答案 1 :(得分:0)

如果要移动搜索(文本框)和标签,则应获取所选单元格的位置,并使用新位置更新文本框和标签的位置。您可以使用 ContentBounds 获取位置(坐标)。还可以结帐:http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcell.contentbounds(v=vs.110).aspx 希望这有帮助