我有一个Datagridview
,其中有一些列Date, Description , Module, Name
等等。Datagridview
我有一个文本框和标签(搜索),用于搜索所选列的值。
我的问题是,我想根据所选列移动标签(搜索)和文本框。例如,如果我选择描述列,标签(搜索)应该在日期列中,文本框应该在描述列中,文本框宽度应与列宽相同。如果选择零索引列(日期),则文本框应位于“日期”列中,而“标签”(搜索)应位于第一个索引列。
我陷入了这个问题,我不知道该怎么做。
答案 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 希望这有帮助