2016-04-15 6 views
1

Некоторые элементы управления в моей форме имеют свойство DataSource на самом элементе управления, а некоторые нет.Изменение значения свойства элемента управления, если элемент управления имеет свойство

Я хочу пропустить все элементы управления и установить DataSource в Nothing, если элемент управления имеет свойство. Это будет работать примерно так.

Private Sub ClearAllDatabindings() 
    If _dataBindingsSet = True Then 
     For Each ctrl As Control In Me.Controls 
      ClearDataBindings(ctrl) 
      SetDatasourceToNothing(ctrl) '-- This is the piece idk how to Write. 
     Next 
    End If 
End Sub 

Я не уверен, как проверить это во время выполнения.

+0

Почему C# указан? –

+1

Рассмотрите возможность использования Reflection. GetProperties – Ian

+0

@TimFreese C# и vb.net - две стороны одной и той же монеты в winforms. – codemonkeyliketab

ответ

1

По просьбе OP, C#, используя System.Reflection, вы могли бы сделать что-то подобное, чтобы проверить, если/его экземпляр класса имеет свойство или нет:

//for class type 
var props = typeof(MyClass).GetProperties(); 
if (props == null || props.Length <= 0) { //does not have property 
    //do something 
} 

//for class instance 
var props = classInstance.GetType().GetProperties(); 
if (props == null || props.Length <= 0) { //does not have property 
    //do something 
} 

Для проверки для конкретного объекта:

var prop = props.SingleOrDefault(x => x.Name == "propName"); 
if(prop != null){ 
    //has that property 
    //do changing of your Control here 
} 
Смежные вопросы