小编Pac*_*ccc的帖子

将自定义对象列表显示为PropertiesGrid中的下拉列表

我想拿一个对象,让我们说这个对象:

public class BenchmarkList
{
    public string ListName { get; set; }
    public IList<Benchmark> Benchmarks { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并让该对象将其ListName显示为PropertiesGrid的"name"部分("Benchmark"将是好的),并且对于PropertyGrid的"value"部分,要有一个IList <> of Benchmarks的下拉列表:

这是Benchmark对象

public class Benchmark
{
    public int ID {get; set;}
    public string Name { get; set; }
    public Type Type { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我希望下拉列表显示基准的Name属性,以便用户可以看到.这是一个视觉示例:

在此输入图像描述

所以,基本上,我正在尝试将Benchmark对象的集合放入下拉列表中,并且这些对象应该将其Name属性显示为下拉列表中的值.

我已经阅读了有关使用PropertiesGrid的其他文章,包括THISTHIS,但它们比我想做的更复杂.

我经常处理服务器端的东西,并且不通过WebForms或WinForms处理UI,所以这个PropertiesGrid真的带我去旅行......

我知道我的解决方案在于实现"ICustomTypeDescriptor",这将允许我告诉PropertiesGrid它应该显示哪些值,而不管我想要绑定到下拉列表中的对象的属性,但我是只是不确定如何或在何处实施它.

任何指针/帮助将非常感激.

谢谢,迈克

更新:

好的,所以我正在改变一些细节.我之前想过应该参与的对象,所以这是我的新方法.

我有一个名为Analytic的对象.这是应该绑定到PropertiesGrid的对象.现在,如果我公开一个枚举类型的属性,PropertiesGrid将为我处理下拉列表,这是非常好的.如果我公开一个属于自定义类型集合的属性,那么PropertiesGrid就不那么好......

以下是Analytic的代码,我想要绑定到PropertiesGrid的对象:

public class Analytic
{ 
    public enum Period { Daily, Monthly, Quarterly, Yearly };
    public Analytic()
    { …
Run Code Online (Sandbox Code Playgroud)

c# propertygrid winforms

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

Parallel.Foreach与正常ForEach一样快/慢

更新:我使用线程在内核数量中分割循环(在我的情况下为8),完整的循环在1秒内完成.所以问题不在于,线程操作不会更快.为什么Parralel Extension在这种情况下会失败?

嘿大家.我想用Parrallel.Foreach转换我的ForEach.问题是,parralelisation对我来说几乎没有任何好处.

原版的:

foreach (Entities.Buchung buchung in buchungen) {
    Int32 categoryID = manager.GetCategoryID(new Regelengine.Booking(buchung)); // Average 4ms
    buchung.Category = categoryID.ToString();
}
Run Code Online (Sandbox Code Playgroud)

平行:

System.Threading.Tasks.Parallel.ForEach(buchungen, buchung => {
    Int32 categoryID = manager.GetCategoryID(new Regelengine.Booking(buchung));
    buchung.Category = categoryID.ToString();
});
Run Code Online (Sandbox Code Playgroud)

结果:

---------------------------
Stopwatched Results for 1550 entries in the List:
---------------------------
Parallel.Foreach 00:00:07.6599066
Average Foreach: 00:00:07.9791303
Run Code Online (Sandbox Code Playgroud)

也许问题是,循环中的实际动作如此之短?但没有人能告诉我,在英特尔I7上并行执行1550操作将无法节省时间.

c# parallel-processing foreach multithreading

13
推荐指数
2
解决办法
7336
查看次数

从VS 2010扩展中的代码编辑器中打开无文件源代码文档

我正在使用VS 2010 SDK SP1创建Visual Studio 2010扩展,该扩展将在代码编辑器中打开源代码文件.扩展名是一个ToolWindow,它停靠在解决方案资源管理器所在的位置.

该扩展使用WCF服务,它检索源代码文件并在TreeView中显示层次结构.当双击代码文件时,它应该将相关的源加载到代码编辑器窗口中,就像解决方案资源管理器一样.

我已经阅读了有关VS扩展和DTE自动化的一段时间了,并且几乎没有取得任何进展.似乎我可以毫无问题地访问已经打开或活动的WpfTextViews,但我不明白如何在IDE的文档区域中打开一个新的TextView.请记住,这些不是保存在磁盘上的实际源代码文件,而是从WCF服务检索并存储在内存中.

有人可以提供一个例子或者给我一些如何实现这个的指导吗?谢谢.

.net c# visual-studio-2010

7
推荐指数
1
解决办法
247
查看次数

将对象数组的列表绑定到ASP.NET中的ListView

我正在解决问题.我有一个方法返回一个List<Object[]>.

object[]列表中的每个包含以下内容:

object[0]=Id;
object[1]=Name;
Run Code Online (Sandbox Code Playgroud)

现在,我正在寻找一种方法将此List绑定到自定义中的ListView,ItemTemplate如下所示:

<asp:Label runat="server" ID="lblId"
    Text="Here want to do an Eval/Bind for object[0]"></asp:Label>

<asp:Label runat="server" ID="lblName"
    Text="Here want to do an Eval/Bind for object[1]"></asp:Label>
Run Code Online (Sandbox Code Playgroud)

任何建议都将深表感谢.

asp.net listview bind eval

3
推荐指数
2
解决办法
8062
查看次数