2016-12-08 7 views
0

У меня есть собственный User Control с WinForms DataGrid внутри. код нижеНевозможно установить свойство User Control с помощью Reflection, поднять NullReference

public partial class SearchTextBox : UserControl 
{ 
    public SearchTextBox() 
    { 
     _grid.Visible = false; 
     _grid.Location = new Point(Location.X + Height, Location.Y + Width); 
    } 

    public object DataSourse 
    { 
     get { return _grid.DataSource; } 
     set 
     { 
      try 
      { 
       if (value is DataTable) 
       { 
        _grid.DataSource = value; 
       } 
       else 
       { 
        _grid.DataSource = value; 
       } 
      } 
      catch (Exception) 
      { 
       throw; 
      } 
     } 
    } 
} 

После Инициирования моей формы, которая содержит мое пользовательский элемент управления я пытаюсь использовать отражение, чтобы установить DataSource свойству этого путь

Type type = ObjectName.GetType(); 
PropertyInfo DataSource = type.GetProperty("DataSource"); 
DataSource.SetValue(ObjectName, cs.table); 

Этого код вызывает NullReference исключения на линии

DataSource.SetValue(ObjectName, cs.table); 

Как я могу видеть в VS IntelliSence DataSource объект имеет нулевую ссылку, и я не могу решить эту проблему. Если я пытаюсь использовать аналогичный способ отражения для присвоения значения свойства стандартным элементам управления WinForms, например. ComboBox - он работает правильно, и DataSource имеют ссылку на объект.

Похоже, что я не могу назначить свойство таким образом, и мой конструктор UC написал неправильно.

Как я могу настроить свойство пользовательского элемента управления пользователя с помощью отражения?

+0

Возможный дубликат [Установить свойства объекта с помощью отражения] (http://stackoverflow.com/questions/619767/set-object-property-using-reflection) – Kinetic

+0

Мой код абсолютно такой же, как и код в ответе на связанный вопрос. – CRM

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^