protected override void OnMeasureItem(MeasureItemEventArgs e) { base.OnMeasureItem(e); if(!this.DesignMode) { int maxSubItemHeight = 0; PropertyDescriptorCollection pdc = this.DataManager.GetItemProperties(); for(int currentColumnIndex=0;currentColumnIndex<realColumnCount;currentColumnIndex++) { e.ItemWidth = ColumnWidths[currentColumnIndex]; MeasureSubItemEventArgs msiea = new MeasureSubItemEventArgs(e.Graphics,e.Index,currentColumnIndex); OnMeasureSubItem(msiea); if(msiea.ItemHeight > maxSubItemHeight) maxSubItemHeight = msiea.ItemHeight; } e.ItemHeight = maxSubItemHeight; } }
protected virtual void OnMeasureSubItem(MeasureSubItemEventArgs e) { if(MeasureSubItem != null && MeasureSubItem.GetInvocationList() != null) MeasureSubItem.DynamicInvoke(new object[]{this,e}); }
private void measureLBItem(object sender, MeasureSubItemEventArgs e) { MultiColumnListBox lb = (MultiColumnListBox)sender; SizeF s = e.Graphics.MeasureString("O",lb.Font); e.ItemWidth = (int)s.Width; e.ItemHeight = (int)s.Height+4; }