C# Windows窗体应用程序:显示内容行

C# Windows窗体应用程序:显示内容行,c#,winforms,C#,Winforms,是否可以根据数据库中的行数在windows窗体应用程序中显示内容。我不知道这是否可以用一种简单的方式实现,但概念附在下面,它显示了内容部分,左侧是一个图像,标签2应该是人的名字,标签3是人写的内容 现在的问题是,如果有多篇文章,我如何才能使“行”显示数据库中的所有内容。如果我使用ASP.NET,可能会更容易,因为格式为: <ul> <li><img src="#"/> <h1>Name</h1> <p>Content&l

是否可以根据数据库中的行数在windows窗体应用程序中显示内容。我不知道这是否可以用一种简单的方式实现,但概念附在下面,它显示了内容部分,左侧是一个图像,标签2应该是人的名字,标签3是人写的内容

现在的问题是,如果有多篇文章,我如何才能使“行”显示数据库中的所有内容。如果我使用ASP.NET,可能会更容易,因为格式为:

<ul>
  <li><img src="#"/> <h1>Name</h1> <p>Content<p> </li>
<ul>
  • 名称内容

您应该准备一个带有“post”外观的用户控件 接下来使用FlowLayoutPanel作为容器,并将您为db中的每个帖子创建的“控件”添加到其子项中

编辑:
如果将FlowLayoutPanel.FlowDirection设置为自上而下,您将获得所需的内容。

所需的是ListView控件。您将为从数据库返回的每一行创建一个循环并添加项。请查看一个示例

编辑:使用DataGridView将允许在每个单元格中有多行。下面是一个简单的例子,我手头没有一个小图像,但这将正确设置文本:

DataGridView dgv = new DataGridView();
dgv.Columns.Add("Header","Header");
dgv.Columns.Add("Details", "Details");
dgv.Dock = DockStyle.Fill;
dgv.Columns[1].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
dgv.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
dgv.Rows.Add(new string[] { "Drew", "Some details" + Environment.NewLine + "use two lines" });
dgv.Rows.Add(new string[] { "Bill", "More details" });
Controls.Add(dgv);

你的数据库结构是什么?您可以用列来编写表吗?使用ListView或GridView./DataGrid Control值得注意的是,这确实需要第三方版本的具有多行支持的ListView,以避免看起来像一个完全的bodge。是的,您是对的,我忽略了这一点。DataGridView允许在一列中包含多行,下面是一篇提出相同问题的帖子:。尽管如此,如果格式发生变化,roxik0的解决方案可能会更加灵活。我不想使用“表”布局,我希望以某种方式对其进行自定义,以适应布局,并与我编写的html相似。例如,考虑一下twitter桌面应用程序,它显示多篇文章,每个文章都有照片、姓名、时间、内容和行号分隔符?您可以自定义DataGridView,使其看起来像这样,例如,执行以下操作:
dgv.CellBorderStyle=DataGridViewCellBorderStyle.None;dgv.RowHeadersVisible=假;dgv.ColumnHeadersVisible=假;foreach(dgv.Rows中的DataGridViewRow){row.DefaultCellStyle.BackColor=Color.DarkGray;}
使其看起来不像网格。。。您还可以考虑将WPF与XAML结合使用,我不太熟悉,但似乎更像HTML。或者,使用roxik0的解决方案,创建您自己的用户控件。如果您正在寻找一个相当定制的实现,听起来可能是这样