public GXGraphItemForm(GXGraphItemCollection items, List<GXKeyValuePair<GXDLMSObject, GXDLMSCaptureObject>> columns, GXDLMSDevice device)
 {
     InitializeComponent();
     GraphItemEditor_SizeChanged(null, null);
     GraphItemList.OwnerDraw = true;
     Items = items;
     int pos = 0;
     List<string> colors = GetColors();
     GXManufacturer man = device.Manufacturers.FindByIdentification(device.Manufacturer);
     foreach (var it in columns)
     {
         GXDLMSObject obj = it.Key;
         int index = it.Value.AttributeIndex;
         if (!GXHelpers.IsNumeric(obj.GetDataType(index)) || (index > 0 && ((index & 0x8) != 0 || (index & 0x10) != 0)))
         {
             continue;
         }
         GXGraphItem item = items.Find(obj.LogicalName, index);
         if (item == null)
         {
             item = new GXGraphItem();
             item.LogicalName = obj.LogicalName;
             item.Color = Color.FromName(colors[pos++]);
             item.AttributeIndex = index;
             items.Add(item);
         }
         string desc = obj.Description;
         GXObisCode code = man.ObisCodes.FindByLN(obj.ObjectType, obj.LogicalName, null);
         if (code != null)
         {
             desc = code.Description;
         }
         ListViewItem tmp = GraphItemList.Items.Add(obj.LogicalName + " " + desc);
         tmp.Tag = item;
     }
 }
 public GXObisCodeGraphItem()
 {
     GraphItems = new GXGraphItemCollection();
 }