Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在windows窗体中显示和操作数据,我应该使用哪个控件?_C#_Winforms - Fatal编程技术网

C# 在windows窗体中显示和操作数据,我应该使用哪个控件?

C# 在windows窗体中显示和操作数据,我应该使用哪个控件?,c#,winforms,C#,Winforms,我想使用C#.NET在windows窗体中显示数据。这很好,有很多方法可以做到这一点。数据以平面文本文件的形式输入。一些数据应显示为横跨控件的单个元素(注释行),而其他数据应显示在具有许多列的表中。但是,我希望整个列表,包括注释,都显示在一个列表中 我的问题是,在这一点上,我不确定我应该/可以使用什么控制来显示这些不规则的数据,或者我应该采取什么方法。为了实现我的目标,我应该学习并计划使用哪些c#forms控件。我目前的候选人在ListView和DataGridView之间摇摆不定。如果某些表行

我想使用C#.NET在windows窗体中显示数据。这很好,有很多方法可以做到这一点。数据以平面文本文件的形式输入。一些数据应显示为横跨控件的单个元素(注释行),而其他数据应显示在具有许多列的表中。但是,我希望整个列表,包括注释,都显示在一个列表中

我的问题是,在这一点上,我不确定我应该/可以使用什么控制来显示这些不规则的数据,或者我应该采取什么方法。为了实现我的目标,我应该学习并计划使用哪些c#forms控件。我目前的候选人在ListView和DataGridView之间摇摆不定。如果某些表行是单列,而其他表行是多列(如果有的话),可以使用什么工具来满足这一需求

假设我的数据如下所示:

red       | green    | purple   | blue
comment that is one single piece of data
Foo----------------- | Bar---------------
red-------| green--- | purple-- | blue
one       | green    | purple   | blue
Foo----------------- | Bar---------------
one       | two      | three    | four
comment that is one single piece of data
comment that is one single piece of data
red       | green    | purple   | blue
one       | green    | purple   | blue
Foo----------------- | Bar---------------
one       | two      | three    | four

查看数据的结构将非常有帮助。“统一评论列表”究竟是什么?你说的“不规则数据”是什么意思

无论如何,根据我的经验,Winforms中处理表格数据的最佳工具是
DataGridView
。您可以有组合框单元格、图像单元格。您可以轻松地对其进行格式化和着色,必要时进行验证和禁用


编辑:更多信息

您需要的基本上是一些colspan,可以在HTML网格中轻松获得。引用Ms DataGridView程序管理器的话,在DataGridView中无法轻松做到这一点

The DataGridView does not have any support for merging cells. You can custom paint
content across cells, but apart from that you would have to do a lot of work and
custom coding to produce merged editable cells.
但您可以购买第三方组件(或类似组件)或搜索如下自定义实现:

red       | green    | purple   | blue
comment that is one single piece of data
Foo----------------- | Bar---------------
red-------| green--- | purple-- | blue
one       | green    | purple   | blue
Foo----------------- | Bar---------------
one       | two      | three    | four
comment that is one single piece of data
comment that is one single piece of data
red       | green    | purple   | blue
one       | green    | purple   | blue
Foo----------------- | Bar---------------
one       | two      | three    | four

也许这也很有用:


编辑3:好的,如果您只需要显示数据,为什么不尝试在winform中添加
webBrowser
组件,编写HTML文本,然后显示它?你可以像任何网页一样添加样式、字体、颜色等

样品

private void showHtml()
{
    var htmlstring = @"<html><table border='1'>
      <tr>
        <td>Red</td>
        <td>Green</td>
        <td>Purple</td>
        <td>Blue</td>
      </tr>
        <tr>
        <td colspan='4'>Comment that is one single piece of data</td>
      </tr>
       <tr>
        <td colspan='2'>Foo</td>
         <td colspan='2'>Bar</td>
      </tr>
      <tr>
        <td>Red</td>
        <td>Green</td>
        <td>Purple</td>
        <td>Blue</td>
      </tr>
      <tr>
        <td>Red</td>
        <td>Green</td>
        <td>Purple</td>
        <td>Blue</td>
      </tr>
          <tr>
        <td colspan='4'>Comment that is one single piece of data</td>
      </tr>
      <tr>
        <td>One</td>
        <td>Two</td>
        <td>Three</td>
        <td>Four</td>
      </tr>
    </table>
    </html>";
    webBrowser1.DocumentText = htmlstring;
}
private void showHtml()
{
var htmlstring=@”
红色
绿色
紫色
蓝色
注释是一条单独的数据
福
酒吧
红色
绿色
紫色
蓝色
红色
绿色
紫色
蓝色
注释是一条单独的数据
一个
两个
三
四
";
webBrowser1.DocumentText=htmlstring;
}

我认为,在对画布进行任何控制之前,您应该考虑如何将这些数据保存到系统中。如果你回答这个问题,你会很容易为自己选择一些东西。在我看来,您从GUI级别直接深入到平面文本文件太深了。正如你提到的,有不同类型的数据,你可能想用不同的方式解释它们,给它们一些属性,等等。首先考虑一下,然后将其连接到GUI。@KrzysztofDziądziak我修改了我的问题,将重点放在我的绊脚石上,并提供了一个数据的示例。我修改了我的问题,将重点放在我的绊脚石上,并提供了一个数据的示例。虽然你说的是对的,但我相信,我更感兴趣的是我以前描述为“不规则数据+1”的问题,还有其他选择吗。别再装腔作势了。列表视图?有没有更简单的方法?我必须告诉你,我正在考虑一个HTML解决方案作为一种可能性,但我想我可能会决定重新思考和修改我的需求/设计。