public void Show(RoadMap map, ArrayList features)
        {
//            foreach(MapXLib.Feature f in features)
//            {
//                f.Layer.KeyField = "code";
//                lbFeatures.Items.Add(f.KeyValue);
//            }
//            MapXLib.Feature f = null;
//            for(int i = 0; i < features.Count; i++)
//            {
//                f = (MapXLib.Feature) features[i];
//                f.Layer.KeyField = "code";
//                string sLine = map.GetLayerType(f.Layer.Name) + ": " + f.KeyValue;
//                lbFeatures.Items.Add(sLine);
//            }
            lbFeatures.DataSource = features;
            lbFeatures.DisplayMember = "TheString";
            Show();
        }        private void InfoForm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            this.Hide();
            e.Cancel = true;
        }
}    struct FeatureInfo
    {
        string type;
        string code;
        
        public FeatureInfo(MapXLib.Feature feature)
        {
            type = RoadMap.GetLayerType(feature.Layer.Name);
            feature.Layer.KeyField = "code";
            code = feature.KeyValue;
        }        public string Type
        {
            get { return type; }
            set { type = value; }
        }        public string Code
        {
            get { return code; }
            set { code = value; }
        }        public string TheString
        {
            get { return type + ": " + code; }
        }
    }
}