如何在Compact Framework c#中迭代BindingSource项?
本文关键字:迭代 BindingSource Compact Framework | 更新日期: 2023-09-27 18:10:54
我希望在某个地方有一个大师可以帮助我解决这个问题。
我正在为windows ce移动设备创建一个自定义控件。我创建了一个属性,以便用户可以将任何源绑定到我的控件。我需要遍历源代码并获取显示成员路径的项值。
声明源代码,然后创建属性。在构造中,如果源更改,我将注册一个事件,以便我可以再次开始绘制对象。这是我第一次从这个角度使用绑定源。是我漏掉了什么还是用错了?下面是一些代码片段
private BindingSource _bindingCollection;
public object DataSource
{
set { _bindingCollection.DataSource = value; }
}
public string DisplayMemberPath { get; set; }
ctor()
{
_bindingCollection.DataSourceChanged += _bindingCollection_DataSourceChanged;
}
void _bindingCollection_DataSourceChanged(object sender, EventArgs e)
{
foreach (var item in _bindingCollection)
{
//I am stuck here on getting the value from the item that is
// specified by DisplayMemberPath to paint my objects on the control
//I can only paint on the control and cannot add any controls to it.
//So here a method is called with the value as a parameter and the
//Graphics object will draw the string
}
}
Thanks in advanced.
的问候Riaan
编辑:哥们,我知道你是用on paint方法来画画的,这就是我想做的一个例子。我从头开始创建一切,整个控件都是从代码中绘制的,我覆盖了所有需要的事件。也许可以设置_bindingCollection。DisplayMemberPath中的datammember ?当遍历源时,会得到该项吗?现在将测试和张贴答案,如果它的工作。请不要再评论或回答告诉我在油漆或类似的东西上使用。专注于从集合中获取显示成员值的问题:)
编辑:找到答案了好吧,抱歉,这实际上是一个非常愚蠢的问题,我问的时候忙了很多事情。这实际上很容易获得属性值。 for (int index = 0; index < _bindingCollection.Count; index++)
{
var propertyValue = _bindingCollection[index].GetType().GetProperty(DisplayMemberPath ).GetValue(_bindingCollection[index], null);
// Can do anthing now with the value here or just create a
//method of returning this value with this line of code on top.
}
如果有人需要删除问题,可以删除它。我将把它留在这里,如果有其他人在这个解决方案非常匆忙,不知道如何得到它。这些只是代码片段,无论如何都不能使用方法。
我只是将问题标记为已回答。阅读我的编辑,看看我愚蠢的思维错误,以及为什么它很容易。
我将把这篇文章留给那些可能和我有相同想法的人,除非有人觉得这个问题必须被删除,否则你可以继续。