2

我有一个名为 SupplierName 和 ProductName 的文本框,它们处于打开状态groupbox1,并且gridview1看起来像智能感知。

例如,当我在供应商名称中输入“s”时,gridview1它会从数据库中获取以“s”开头的客户名称,并且它动态地位于供应商名称文本框中当前单词的底部,如智能感知。

使用 SupplierName 文本框看起来不错,但 ProductName 文本框已打开groupbox1 ,我无法找到出现gridview1groupbox1ProductName 文本框附近的位置。即使我在 ProductName 文本框中输入文本,它也只会出现在 SupplierName 文本框附近。

这是tb文本框参数的代码,它采用当前输入文本的文本框名称:

int i = tb.SelectionStart;
...
Point pt = tb.GetPositionFromCharIndex(i);
pt.Y += (int)Math.Ceiling(tb.Font.GetHeight());
pt.Y += 2;
using (Graphics g = Graphics.FromHwnd(tb.Handle))
{  
    SizeF size = g.MeasureString(tb.Text, tb.Font);
    if (size.Width > tb.Width)
    {
        // float length = size.Width % txtintellisense.Width;
        pt.X += tb.Width;
    }
    else
    pt.X += (int)size.Width;
}
Point point = tb.Location;
pt.X += point.X;
pt.Y += point.Y;
this.dGVinvisible.Location = pt;
this.dGVinvisible.BringToFront();
4

2 回答 2

1

你可以试试这个..

Point point = tb.Location;
Point point0 = GroupBox1.Location;
pt.X += point.X + point0.X;
pt.Y += point.Y + point0.Y;
this.dGVinvisible.Location = pt;

您可以将 DGV 父级设置为 GroupBox1 ..dGVinvisible.Parent = GroupBox1

于 2013-07-05T06:55:22.983 回答
0

LocationTextBox相对于ProductNameGroupBox,但您的代码将其视为相对于 Form。您需要通过向它们添加 GroupBox 坐标来偏移坐标。

pt.Offset(groupBox.Location);
this.dGVinvisible.Location = pt;
于 2013-07-05T03:43:11.507 回答