2016-04-15 17 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

反射を使用することを検討してください。 GetProperties – Ian

+0

@TimFreese c#とvb.netはwinformsの同じコインの2つの側面です。 – codemonkeyliketab

答えて

1

するSystem.Reflectionを使用して、C#では、OPの要求に応じてクラス/そのインスタンスは、プロパティを持っているかどうかを、あなたがチェックするために、このような何かを行うことができます:

//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 
}