【问题标题】:Windows form application: Displaying rows of contentWindows 窗体应用程序:显示内容行
【发布时间】:2015-01-22 12:42:06
【问题描述】:

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

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

<ul>
  <li><img src="#"/> <h1>Name</h1> <p>Content<p> </li>
<ul>

【问题讨论】:

  • 你的数据库结构是什么?你能用它们的列写你的表吗?
  • 使用 ListView 或 GridView./DataGrid 控件

标签: c# winforms


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您正在寻找的是一个 ListView 控件。您将创建一个循环并为从数据库返回的每一行添加项目。以Using a ListView with images 为例。

    编辑:使用 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 的第三方版本才能看起来像个大杂烩。
    • 是的,你说得对,我忽略了这一点。 DataGridView 将允许单列中的多行,这是一个提出相同问题的帖子:stackoverflow.com/questions/22103749/…。不过,如果格式完全不同,roxik0 的解决方案可能会更灵活。
    • 我不想使用“表格”布局,我想以某种方式自定义它以适应布局并类似于我编写的 html。例如,想想 twitter 桌面应用程序,它显示多个帖子,每个帖子都有照片、姓名、时间、内容和行分隔符?
    • 您也可以自定义 DataGridView 使其看起来像这样,例如,执行以下操作:dgv.CellBorderStyle = DataGridViewCellBorderStyle.None; dgv.RowHeadersVisible = false; dgv.ColumnHeadersVisible = false; foreach (DataGridViewRow row in dgv.Rows) { row.DefaultCellStyle.BackColor = Color.DarkGray; } 使其看起来不像网格...您还可以考虑将 WPF 与 XAML 结合使用我不熟悉,但似乎更像 HTML。
    • 或者,使用 roxik0 的解决方案并创建您自己的用户控件。如果您正在寻找一个相当自定义的实现,听起来您可能是
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    相关资源
    最近更新 更多