我不确定“重绘”是否是我要找的东西……我还不熟悉手动设计Windows窗体。我创建了一个类,它将使用"TableLayoutPanel"作为传递变量,并在该表格布局面板内进行自身设计,以便可以重新使用该控件并调整其参数以适应其包含的数据。
我有一个事件,可以在框架调整大小时重新绘制控件,这很好用。然而,在我第一次.Show()显示窗体时,它不会显示类中的任何子控件。如果我手动调用从Resize事件调用的“resize”方法,它也不会重新绘制本身。
我只能得到一个空的“TableLayoutPanel”,直到我手动调整窗口大小才会调用父TableLayoutPanel上的“Resize”事件。
以下是我的类的截断版本,已经删除了不相关的方法:
我有一个事件,可以在框架调整大小时重新绘制控件,这很好用。然而,在我第一次.Show()显示窗体时,它不会显示类中的任何子控件。如果我手动调用从Resize事件调用的“resize”方法,它也不会重新绘制本身。
我只能得到一个空的“TableLayoutPanel”,直到我手动调整窗口大小才会调用父TableLayoutPanel上的“Resize”事件。
以下是我的类的截断版本,已经删除了不相关的方法:
public class DataTableFrame : Form
{
TableLayoutPanel MyFrame;
Size ParentSize;
int Row = 1;
int Col = 1;
int LabelWidth = 75;
int TextWidth = 150;
List<DataObject> MyData = new List<DataObject>();
public class DataObject
{...
}
public DataTableFrame() { }
public DataTableFrame(TableLayoutPanel Parent)
{
MyFrame = Parent;
MyFrame.AutoScroll = true;
ParentSize = MyFrame.Size;
MyFrame.Layout += new LayoutEventHandler(MyFrame_Layout);
}
void MyFrame_Layout(object sender, LayoutEventArgs e)...
public void AddData(string Label, string Data)...
public void EvaluateRowCol()...
public void RowsColums(int Rows, int Cols)...
public void PopulateControls()...
public void Refresh()
{
// What do I put here to force a redraw???
}
}