2016-12-28 16 views
0

Я использую этот код, это плохой пример, но он работает для тестирования, но в итоге он меняет все строки.RowSizingAutoMaxLines одна строка Ultragrid Infragistics

Мне нужно только изменить выбранную строку.

if (e.Cell.Column.Layout.Override.RowSizingAutoMaxLines == 4) 
{ 
     e.Cell.Column.Layout.Override.RowSelectorStyle = Infragistics.Win.HeaderStyle.XPThemed; 
     e.Cell.Column.Layout.Override.RowSizingAutoMaxLines = 20; 
} 
else 
{ 
     e.Cell.Column.Layout.Override.RowSelectorStyle = Infragistics.Win.HeaderStyle.Default; 
     e.Cell.Column.Layout.Override.RowSizingAutoMaxLines = 4; 
} 

ответ

1

Установка RowSizingAutoMaxLines при переопределении устанавливает это для всех строк. Вместо этого вы можете вычислить необходимую высоту строки и установить ее в текущую строку, предположив, что вы заранее задали RowSizing в Free или AutoFree. Вы можете использовать графическое MeasureString вычислить высоту одной строки и установить затем высоту каждой строки, как это:

Первая установка сетки:

private void UltraGrid1_InitializeLayout(object sender, InitializeLayoutEventArgs e) 
{ 
    // I think you need row selectors as you set their style 
    e.Layout.Override.RowSelectors = Infragistics.Win.DefaultableBoolean.True; 

    // Set the RowSizing to some Free value to allow each row to has its onw height 
    e.Layout.Override.RowSizing = RowSizing.AutoFree; 

    // I think you have multiline text in the cells, so you should set CellMultiLine to true too 
    e.Layout.Override.CellMultiLine = Infragistics.Win.DefaultableBoolean.True; 
} 

Затем измерьте одну строку и установить высоту Роу:

// Calculate the height of one line of text 
var oneLineHeight = float.MinValue; 
using(Graphics g = this.ultraGrid1.CreateGraphics()) 
{ 
    oneLineHeight = g.MeasureString("Jj", this.ultraGrid1.Font, int.MaxValue, StringFormat.GenericTypographic).Height; 

} 

// Set the row selectors' style and the row's height 
if(e.Cell.Column.Layout.Override.RowSelectorStyle == Infragistics.Win.HeaderStyle.Default) 
{ 
    e.Cell.Column.Layout.Override.RowSelectorStyle = Infragistics.Win.HeaderStyle.XPThemed; 

    // Add 4 to add some padding 
    e.Cell.Row.Height = (int)(oneLineHeight * 20 + 4); 
} 
else 
{ 
    e.Cell.Column.Layout.Override.RowSelectorStyle = Infragistics.Win.HeaderStyle.Default; 

    // Add 4 to add some padding 
    e.Cell.Row.Height = (int)(oneLineHeight * 4 + 4); 
} 
+0

Спасибо @wnvko, это хороший способ обойти проблему. –

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

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