小编Dar*_*ung的帖子

c#datatable to csv

有人可以告诉我为什么下面的代码不起作用.数据将保存到csv文件中,但数据不会分开.它全部存在于每行的第一个单元格中.

StringBuilder sb = new StringBuilder();

foreach (DataColumn col in dt.Columns)
{
    sb.Append(col.ColumnName + ',');
}

sb.Remove(sb.Length - 1, 1);
sb.Append(Environment.NewLine);

foreach (DataRow row in dt.Rows)
{
    for (int i = 0; i < dt.Columns.Count; i++)
    {
        sb.Append(row[i].ToString() + ",");
    }

    sb.Append(Environment.NewLine);
}

File.WriteAllText("test.csv", sb.ToString());
Run Code Online (Sandbox Code Playgroud)

谢谢.

c# csv delimited-text

104
推荐指数
11
解决办法
22万
查看次数

WinForms中的Model-View-Presenter

我正在尝试使用WinForms首次实现MVP方法.

我试图了解每一层的功能.

在我的程序中,我有一个GUI按钮,当单击时会打开一个openfiledialog窗口.

因此,使用MVP,GUI处理按钮单击事件,然后调用presenter.openfile();

在presenter.openfile()中,是否应该将该文件的开头委托给模型层,或者因为没有要处理的数据或逻辑,它应该只是对请求进行操作并打开openfiledialog窗口吗?

更新: 我已经决定提供赏金,因为我觉得我需要进一步的帮助,最好根据我的具体要点量身定制,以便我有上下文.

好的,在阅读了MVP后,我决定实施被动视图.实际上,我将在Winform上有一堆控件,由Presenter处理,然后委托给Model.我的具体要点如下:

  1. 当winform加载时,它必须获得树视图.我认为视图应该调用一个方法如:presenter.gettree(),这是正确的,这将依次委托给模型,该模型将获取树视图的数据,创建并配置它,将其返回给演示者,然后将传递到视图,然后将其简单地分配给一个面板?

  2. 对于Winform上的任何数据控件,这是否相同,因为我还有一个datagridview?

  3. 我的应用程序,有许多具有相同程序集的模型类.它还支持插件架构,其插件需要在启动时加载.视图是否只调用一个presenter方法,然后调用一个加载插件并在视图中显示信息的方法?然后哪个层控制插件引用.视图是否会引用它们或演示者?

  4. 我认为视图应该处理关于表示的每一件事,从树视图节点颜色到数据网格大小等,我是否正确?

我认为这是我的主要关注点,如果我理解这些流程应该如何,我想我会没事的.

.net c# mvp design-patterns winforms

88
推荐指数
2
解决办法
4万
查看次数

在C#中实现自定义异常的行业标准最佳实践是什么?

在C#中实现自定义异常的行业标准最佳实践是什么?

我检查了谷歌,并提出了大量建议,但我不知道哪些建议具有更高的可信度.

如果任何人有权威文章的链接,那也会有所帮助.

c# custom-exceptions

67
推荐指数
3
解决办法
3万
查看次数

Python'self'关键字

我是Python新手(通常使用C#),在过去几天开始使用它.

在一个类中,您是否需要对该类数据成员和方法的任何调用加前缀?那么,如果我正在调用一个方法或从该类中获取一个值,那么我需要使用self.method()或者self.intvalue,例如?

我只是想检查一下我还没有遇到过那种冗长的方式.

python

57
推荐指数
3
解决办法
6万
查看次数

C#使用Activator.CreateInstance

昨天我问了一个关于使用反射或策略模式动态调用方法的问题.

但是,从那时起,我决定将方法更改为实现公共接口的各个类.原因是,每个类虽然具有一些相似之处,但也执行该类所特有的某些方法.

我一直在使用这样的策略:

switch (method)
{
    case "Pivot":
        return new Pivot(originalData);
    case "GroupBy":
        return new GroupBy(originalData);
    case "Standard deviation":
        return new StandardDeviation(originalData);
    case "% phospho PRAS Protein":
        return new PhosphoPRASPercentage(originalData);
    case "AveragePPPperTreatment":
        return new AveragePPPperTreatment(originalData);
    case "AvgPPPNControl":
        return new AvgPPPNControl(originalData);
    case "PercentageInhibition":
        return new PercentageInhibition(originalData);
    default:
        throw new Exception("ERROR: Method " + method + " does not exist.");
}
Run Code Online (Sandbox Code Playgroud)

但是,随着潜在类数量的增加,我将需要不断添加新类,从而打破关闭修改规则.

相反,我使用了一个解决方案:

var test = Activator.CreateInstance(null, "MBDDXDataViews."+ _class);
       ICalculation instance = (ICalculation)test.Unwrap();
       return instance;
Run Code Online (Sandbox Code Playgroud)

实际上,_class参数是在运行时传入的类的名称.这是一种常见的方法,这会有任何性能问题吗?

我很反思,所以欢迎你提出建议.

c# reflection activator

50
推荐指数
4
解决办法
7万
查看次数

C#4.0和.Net 3.5

所以我们终于在一些开发者工作站上安装了VS2010并且可以使用C#4.0功能.虽然我们开发的大部分内容仍然必须暂时以.Net 3.5为目标.

当我启动一个新项目并将目标设置为.Net 3.5时,它仍然允许我使用C#4.0,如动态.因此,您可以在针对.net 3.5时使用C#4.0功能吗?这些功能是否可以在.Net 4.0不可用的环境中使用?

谢谢.

.net c# .net-3.5

29
推荐指数
1
解决办法
2万
查看次数

在单独的线程上捕获未处理的异常

我正在使用以下事件来捕获主UI线程中的未处理异常.

Application.ThreadException 
Run Code Online (Sandbox Code Playgroud)

不幸的是,它没有在单独的线程中捕获那些未处理的错误.我知道

AppDomain.CurrentDomain.UnhandledException
Run Code Online (Sandbox Code Playgroud)

但是,这似乎在触发时关闭应用程序,而前者则没有.

有没有办法在单独的线程上处理未处理的异常,而不关闭应用程序?

c# exception-handling

24
推荐指数
1
解决办法
2万
查看次数

使用Action词典而不是switch语句

我只是回顾一些旧的代码(有一些空闲时间),我注意到一个相当冗长的switch语句.由于获得了新知识,我已经以下面的形式重构了它:

private Dictionary<string, Action> createView
    {
        get
        {
            return new Dictionary<string, Action>()
            {
                {"Standard", CreateStudySummaryView},
                {"By Group", CreateStudySummaryByGroupView},
                {"By Group/Time", CreateViewGroupByHour}
            };
        }
    }
Run Code Online (Sandbox Code Playgroud)

你会考虑这个好习惯,还是仅仅是一个超级丰富和不必要的案例?我渴望确保我学到的新技术,仅仅为了它而不是聪明,并且它们实际上为代码增加了好处.

谢谢.

c# polymorphism refactoring conditional-statements

23
推荐指数
3
解决办法
1万
查看次数

用于绘制图形和滚动的c#面板

我希望能够使用面板或类似工具将图形绘制到Winform上.如果图形变得比控件大,我似乎无法看到有关添加滚动条的任何内容?

是否可以使用面板执行此操作,或者是否存在允许它的类似控件?

谢谢.

c# panel winforms

21
推荐指数
1
解决办法
2万
查看次数

WPF用户控件与自定义控件

我正在尝试使用每行上的复选框创建一个组合框,以允许多次选择.作为用户控件或自定义控件,这会更好吗?

我之前没有创建过一个控件,只是在寻找一个关于我需要走向哪个方向的建议.

谢谢.

c# wpf custom-controls

20
推荐指数
2
解决办法
1万
查看次数