Установка значений свойств динамически - PullRequest
1 голос
/ 24 августа 2010

Я использую PivotGrid (DevExpress). Я хочу установить параметры свойства AppearancePrint в цикле for.

Как использовать тип переменной для таких свойств, как Cell, в приведенном ниже примере?

так вместо

grid.AppearancePrint.Cell.BackColor = Color.White;
grid.AppearancePrint.Cell.BackColor2 = Color.LightBlue;

Я хочу сделать это:

//datarow example <PrintAppearance Type="Cell" Font="Tahoma,8,Regular" BackColor="White" BackColor2="Light Grey"/>

foreach (DataRow dr in appearances)          
{
   string type = dr["Type"].ToString();
   grid.AppearancePrint.[type].BackColor = Color.FromName(dr["BackColor"].ToString());
   grid.AppearancePrint.[type].BackColor2 = Color.FromName(dr["BackColor2"].ToString());
}

Ответы [ 2 ]

2 голосов
/ 24 августа 2010

По сути, это форма синтаксического анализа, и вам нужно будет использовать отражение, чтобы сделать это.Например:

foreach (DataRow dr in appearances) {
   string type = dr["Type"].ToString();

   PropertyInfo propertyForType = grid.AppearancePrint.GetType().GetProperty(type);
   object objectForProperty = propertyForType.GetValue(grid.AppearancePrint, null);

   PropertyInfo propertyForBackColor = objectForProperty.GetType().GetProperty("BackColor");
   PropertyInfo propertyForBackColor2 = objectForProperty.GetType().GetProperty("BackColor2");

   propertyForBackColor.SetValue(objectForProperty, Color.FromName(dr["BackColor"].ToString()), null);
   propertyForBackColor2.SetValue(objectForProperty, Color.FromName(dr["BackColor2"].ToString()), null);
}
0 голосов
/ 24 августа 2010

Я не знаком с вашей конкретной проблемой, но на первый взгляд кажется, что вам нужно использовать отражение, так как вы не будете знать тип до времени выполнения - если вы не знакомы с отражением, это позволит вам изучить объект (и, что более важно, свойства на нем)

См. здесь для возможного решения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...