c# - 流布局面板问题

标签 c# .net winforms

我正在尝试制作一个控件列表。为此,我使用了流布局面板和自定义项。读取 XML 文件后,我用我的项目填充流程布局面板。对于少数项目,一切都很好,但对于流程布局面板中的 371 个项目,出现了问题。流布局面板底部缺少 95 个项目,接缝重叠。我认为,放置这些元素的空间仍在创造中。我附上了一个带有产生效果的屏幕。控件在一个数组中创建,然后我迭代该数组以将控件添加到流布局面板。

http://img510.imageshack.us/img510/3201/screen2011916213527199.jpg

谢谢。

乐:

public delegate void AddHistoryItemDelegate(Control itm);
        public void AddHistoryItem(Control itm)
        {
            if (InvokeRequired)
            {
                Invoke(new AddHistoryItemDelegate(AddHistoryItem), new object[] { itm });
            }
            else
            {
                flowLayoutPanel1.Controls.Add(itm);
            }
        }
foreach (Control c in histroryItems)
            {
                controls++;
                backgroundWorkerLoadHistory.ReportProgress(controls);
                //flowLayoutPanel1.Controls.Add(c);
                AddHistoryItem(c);
            }

委托(delegate)在那里是因为所有这些都发生在一个单独的线程中。 histroryItems 是一个控件列表。

LE:如果它很重要,我观察到,如果我从列表中删除一个项目,在列表加载后,它就会被安排好。尝试一些技巧来查看在线程末尾添加和删除控件是否有任何效果。

最佳答案

你可以试试这个:

        this.flowLayoutPanel1.SuspendLayout();

在添加控件之前:

        this.flowLayoutPanel1.ResumeLayout();

添加控件后。也许应该连续执行以下操作:

        this.flowLayoutPanel1.PerformLayout();

和/或:

        this.flowLayoutPanel1.Refresh();

关于c# - 流布局面板问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7448975/

相关文章:

c# - XML 序列化错误 - 类型 'ItemsElementName' 的选择标识符 'ItemsChoiceType[]' 的值无效或缺失

c# - 如何自行生成证书 SHA-256?

c# - tabControl 中的关闭按钮

c# - 在运行时更改语言的正确方法

c# - DataGridView.Rows.RemoveAt(int index) 不会删除 Windows 窗体中的行?

c# - 使用 Linq to SQL 存储库的可能性能注意事项

c# - 单击 HTML 链接时在 ASP.NET 中调用 C# 函数

c# - 比较 LINQ 中的日期部分

c# - 为什么初始化程序不能处理返回列表 <t> 的属性?

c# - 编程到接口(interface)。如何决定在哪里需要它?