private void listMainInfo_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e) { try { if (e.ItemIndex >= listMainInfo.VirtualListSize || e.ItemIndex >= listMainInfo.DataList.Count) { return; } PortfolioStockInfo pi = listMainInfo.DataList[e.ItemIndex]; e.Item = new ListViewItem(new string[] { string.Format("{0:c}", pi.Name), string.Format("{0:c}", pi.NetAssetApprAmt), string.Format("{0:c}", pi.Deposit2), string.Format("{0:c}", pi.ApprAmt), string.Format("{0:c}", pi.OrderAmt), string.Format("{0:c}", pi.CreditAmt), string.Format("{0:c}", pi.ApprProfit), string.Format("{0:p2}", pi.ApprProfitRate), string.Format("{0:p2}", pi.NetAssetChangedRate) }) { Tag = pi }; } catch { Utils.LogError("error", "listViewPortInfo_RetrieveVirtualItem"); } }
private void listMainInfo_DrawSubItem(object sender, DrawListViewSubItemEventArgs e) { using (StringFormat sf = new StringFormat()) { switch (e.Header.TextAlign) { case HorizontalAlignment.Center: sf.Alignment = StringAlignment.Center; break; case HorizontalAlignment.Right: sf.Alignment = StringAlignment.Far; break; case HorizontalAlignment.Left: sf.Alignment = StringAlignment.Near; break; } sf.LineAlignment = StringAlignment.Far; Brush fontBrush = Brushes.White; if (_type == BalanceType.PORT) { PortfolioStockInfo pi = mPortStockInfoList[e.ItemIndex]; switch (e.ColumnIndex) { case 0: fontBrush = Brushes.Yellow; break; case 6: case 7: fontBrush = listBalanceInfo.GetPlusMinusBrush(pi.ApprProfit); break; case 8: fontBrush = listBalanceInfo.GetPlusMinusBrush(pi.NetAssetChangedRate); break; } } e.Graphics.DrawString(e.SubItem.Text, this.Font, fontBrush, e.Bounds, sf); listMainInfo.OnDrawSubItem(sender, e); } }