сложность вставки имени во вставленный объект флажка списка - PullRequest
1 голос
/ 22 ноября 2010

Я abit новый в C #, и я пытаюсь вставить объект в CheckedListBox, поэтому этот вставленный элемент будет иметь заголовок внутри проверенного списка (мой объект содержит строковое поле внутри него, которое я хочу отобразить в CheckedListBox) например это мой класс:

 public class InfoLayer
{
    private string LayerName;
    private List<GeoInfo> GeoInfos;
    public InfoLayer()
    {
        LayerName = "New Empty Layer";
        GeoInfos = new List<GeoInfo>();
    }
    public InfoLayer(string LayerName)
    {
        this.LayerName = LayerName;
        GeoInfos = new List<GeoInfo>();
    }
    public InfoLayer(string LayerName,List<GeoInfo> GeoInfosToClone):this(LayerName)
    {
        foreach (GeoInfo item in GeoInfosToClone)
        { 
             GeoInfos.Add((GeoInfo)((ICloneable)item).Clone());
        }
    }
    public GeoInfo SearchElement(long id)
    {
        foreach (GeoInfo info in GeoInfos) // foreach loop running on the list 
        {
            if (info.INFOID == id) 
                return info; // return the item if we found it
        }
        return null;
    }

    public GeoInfo SearchElement(string name)
    {
        foreach (GeoInfo info in GeoInfos)
        {
            if (info.INFONAME.CompareTo(name)==0)
                return info;
        }
        return null;
    }

    public override string ToString()
    {
        string toReturn = "";
        for (int i = 0; i < GeoInfos.Count; i++) // for loop running on the list 
        {
            toReturn += String.Format("{0}\n",GeoInfos[i].ToString()); // piping another geoinfo 
        }
        return toReturn;
    }

    public string LAYERNAME{get{return LayerName;}}

мой класс также содержит переопределение тострингов внутри нее (не то, что я хочу отобразить)

Заранее спасибо за помощь.

Ответы [ 3 ]

1 голос
/ 22 ноября 2010

Переопределить ToString () в вашем классе, классе, экземпляром которого является объект.

Редактировать:

Вы не хотите отображать содержимоеToString().Вы хотите отобразить LayerName, не так ли?Возможно, вам следует отобразить значения с привязкой данных.Затем вы можете установить DisplayMember для вашего нового свойства LAYERNAME.

0 голосов
/ 22 ноября 2010

((MyObjectType) checkedListBox1.Items (index)). Имя = "что угодно"

Вам нужно будет знать индекс объекта, который вы хотите изменить.

Вам просто нужно переопределить метод ToString в вашем классе, чтобы он возвращал это Name значение свойства.

public overrides string ToString() {
    return Name;
}

Затем будет отображаться его имя при добавлении в CheckedListbox.

0 голосов
/ 22 ноября 2010

Я считаю, что это то, что вы пытаетесь достичь:

checkedListBox1.Items.Add(yourObject.stringField);
...