【发布时间】:2017-07-14 14:56:03
【问题描述】:
我习惯于使用 HTML 应用程序,在这些应用程序中创建组件列表(如电话簿联系人)没有问题。
现在我已经在 Windows 窗体中使用了这种方法。一个面板填充了大量自定义用户控件 (UC)。只有 30 个 UserControls 需要超过 5 秒才能呈现。而数据库中的数据列表在
这个 UC 只有标签、PictureBox 和 Click 事件。它是这样称呼的。此数据用于填充子控件。
new UserControl(MyModel data);
有没有更好的方法来做到这一点?我想要用户友好的 GUI,而不是使用网格布局。它对用户不友好,并且在向用户显示数据方面非常有限。
foreach (var data in myDbResult)
{
var uc = new MyUserControl(data);
uc.Dock = DockStyle.Top;
resultFlowPanel.Controls.Add(uc);
}
...
public MyUserControl(MyModel data)
{
this.data = data;
InitializeComponent();
label1.Text = data.name;
label2.Text = data.address;
// get some more data from database
using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["AlarmDbCon"].ConnectionString))
{
payer = db.Query<Models.g_UserPayer>("SELECT TOP(1) * FROM g_UserPayer WHERE ID_User=@UserID", new
{
UserID = guard.ID_User
}).FirstOrDefault();
}
label3.Text = payer.email;
PictureBox.Image = payer.image;
}
【问题讨论】:
-
显示代码,您可以在其中填充 UI。为什么网格布局对用户不友好且受限? C# 不是 HTML,Grid 不是 Table
-
这取决于我,我先从
Control继承并自己绘制控件。它将比创建用户控件轻得多。 -
据我所知,网格布局只能在表格视图中显示数据?不可能创建这样的东西link