如何在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.
        }

如果有人需要删除问题,可以删除它。我将把它留在这里,如果有其他人在这个解决方案非常匆忙,不知道如何得到它。这些只是代码片段,无论如何都不能使用方法。

如何在Compact Framework c#中迭代BindingSource项?

我只是将问题标记为已回答。阅读我的编辑,看看我愚蠢的思维错误,以及为什么它很容易。

我将把这篇文章留给那些可能和我有相同想法的人,除非有人觉得这个问题必须被删除,否则你可以继续。