gpt4 book ai didi

c# - 如何让控件重绘 Windows 窗体?

转载 作者:行者123 更新时间:2023-11-30 13:56:54 25 4
gpt4 key购买 nike

我不太确定“重绘”是我要找的东西...我是手工设计 Windows 窗体的新手。我创建了一个类,它将使用“TableLayoutPanel”作为传递变量,并在该表格布局面板中进行自己的设计,以便可以重复使用该控件并调整其参数以适应它包含的数据。

我有一个事件会在调整框架大小时重新绘制控件,效果很好。但是,当我第一次.Show() 表单时,它不会显示类中的任何子控件。如果我手动调用从 Resize 事件调用的“resize”方法,它也不会重绘自身。

在我手动调整调用父 TableLayoutPanel 上的“Resize”事件的窗口大小之前,我得到的只是一个空白的“TableLayoutPanel”。

这是我的类的一个截断版本,其中删除了一些方法,因为它们并不真正相关:

    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???
}

}

最佳答案

尝试

this.Invalidate(); //Refreshes or invoke the control to redraw

this.Refresh();

注意:Refresh() 已经在 Form 对象属性中,您不必声明它。

关于c# - 如何让控件重绘 Windows 窗体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23910733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com