我正在尝试构建类似电子邮件客户端的东西。 在收到的电子邮件列表中(列表很高,很窄), 我想显示发件人,主题和日期,但在一行上没有任何水平滚动。 例如,左上角的发件人,右上角的日期和第二行的主题。
我在Outlook中以及iPhone的邮箱中看到了这种列表。
我google了一下,看看是否有其他人建立了这种列表,但找不到任何列表。
我正在使用C#2.0 for Windows, NOT WPF。
任何建议都受到高度赞赏。
感谢您的时间。
-Rakib
答案 0 :(得分:2)
我建议使用Better ListView。还提供免费软件变体Better ListView Express。
Better ListView修复了所有原始.NET ListView错误,您永远不需要解决它的缺点。最好的事情是Better ListView是100%托管代码的完全重写,不一个ListView包装器:
答案 1 :(得分:1)
要实现您想要的效果,您需要深入了解TableLayoutPanel
,Panel
等布局控件。然后,您需要设计自己的UserControl
显示一个电子邮件项目(EmailItemControl
)。
完成后,您将拥有一个容器来容纳这些物品。为此,您可以使用FlowLayoutPanel。创建一个新的UserControl(EMailListControl
),向其添加FlowLayoutPanel
(flowLayoutPanel1
)并将其Dock样式设置为Fill。
这是EMailListControl的基本实现:
public partial class EMailListControl : UserControl
{
public EMailListControl()
{
InitializeComponent();
flowLayoutPanel1.FlowDirection = FlowDirection.TopDown;
flowLayoutPanel1.WrapContents = false;
flowLayoutPanel1.AutoScroll = true;
flowLayoutPanel1.Resize += new EventHandler( flowLayoutPanel1_Resize );
}
private void flowLayoutPanel1_Resize( object sender, EventArgs e )
{
foreach ( Control control in flowLayoutPanel1.Controls )
{
UpdateControlWidth(control);
}
}
private void UpdateControlWidth(Control control)
{
control.Width = flowLayoutPanel1.Width - (flowLayoutPanel1.VerticalScroll.Visible ? SystemInformation.VerticalScrollBarWidth : 0);
}
public void AddEmailItem( EmailItemControl control )
{
UpdateControlWidth(control);
flowLayoutPanel1.Controls.Add(control);
}
}