public void DataGridRowHeightSetter(DataGrid dg, int row, int Value) 

 ArrayList rowObjects; 
 dg = ((DataGrid)(dg)); 
 MethodInfo mi = dg.GetType().GetMethod("get_DataGridRows", BindingFlags.FlattenHierarchy | BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static); 
 System.Array dgra = ((System.Array)(mi.Invoke(dg, null))); 
 rowObjects = new ArrayList(); 
 object dgrr; 
 foreach (int dgrr in dgra) { 
   if (dgrr.ToString().EndsWith("DataGridRelationshipRow") == true) { 
     rowObjects.Add(dgrr); 
   } 
 } 
 try { 
   PropertyInfo pi = rowObjects(row).GetType().GetProperty("Height"); 
   pi.SetValue(rowObjects(row), Value, null); 
 } catch { 
   throw new ArgumentException("invalid row index"); 
 } 
}

解决方案 »

  1.   

    没有遇到过去microsoft news group看看吧或者codeproject.com
      

  2.   

    就是这句出错:System.Array dgra = ((System.Array)(mi.Invoke(dg, null))); 
    说是什么对象未设置到实例
      

  3.   

    看看mi是不是null.还有mi.Invoke返回值是不是null.
      

  4.   

    System.Array dgra = ((System.Array)(mi.Invoke(dg, null))); 
    两种可能
    1 mi本身是null
    2 mi.Invoke函数返回null
      

  5.   

    发现mi本身是null的,是不是自定义控件中没有写
    get_DataGridRows这个方法,应该怎么写呢