Loading a combobox with an enum and binding to it I have the following code to load an enumeration into a bound combo box, but am not quite happy with it. 

I would prefer to store the actual enum value in the combo box and bind directly to it.
However, I can't quite figure out how to do so.

 public enum HemEnum
    {
        HemNone = -1,
        Hemsew = 0,
        HemWeld = 1,
        Hemdoublefold = 2
    }


 public static void LoadHemCombo(ComboBox cbo)
    {
    var values = from Enum e in Enum.GetValues(typeof(HemEnum))
                     select new { ID = e, Name = e.ToString() };

          foreach (var value in values)
    {
        var s = GetHemTypeDescription((HemEnum)value.ID );
        cbo.Items.Add(s);
    }
    }

  public static string GetHemTypeDescription(HemEnum hemType)
    {
        string s = null;
        switch (hemType)
        {
            case HemEnum.HemNone:
                s = "none";
                break;
            case HemEnum.Hemsew:
                s = "sewn";
                break;
            case HemEnum.HemWeld:
                s = "welded";
                break;
            case HemEnum.hemdoublefold:
                s = "double folded";
                break;
            default:
                s = "not known";
                break;
        }
        return s;
    }


Inside the form load event I load the combo and bind to it.

 LoadHemCombo(cboHem)
 cboHem.DataBindings.Add("Text", myBindingSource, "HemTypeDescription");

 class myObject
 {
    public string HemTypeDescription
    {
        get
        {
            return GetHemTypeDescription(this.HemType);

        }
        set
        {
            this.HemType = GetHemTypeFromDescription(value);
        }
  }

public static vHemEnum GetHemTypeFromDescription(string description)
    {
        int r =0;
        for (var i = (int)HemEnum.HemNone; i &lt;= (int)HemEnum.Hemdoublefold; i++)
        {
            var s = GetHemTypeDescription((HemEnum)i);
            if (description == s)
            {
                r  = i;
                break;
            }
        }
        return (HemEnum)r;
    }
 }


in the designer I set  

myBindingSource.DataSource = myObject  


and before loading the form I create an instance of myObject and add it to myBindingSource using  

myBindingSource.Add(myObject)
Naming
HemEnum, or any enum name that ends with the word Enum, is a bad name for an enum. Enum types should not contain the word &quot;enum&quot; in their names.
Similarly, HemEnum values should not contain &quot;Hem&quot; in their names either. Your HemEnum should therefore read something like this:
public enum HemType
{
    None = -1,
    Sewn = 0,
    Weld = 1,
    DoubleFold = 2
}

myObject is a bad name for a class - should be MyObject. Kidding (although not really - types should be named following a PascalCasing convention). Anything that ends with &quot;Object&quot; should be banned from being a class name. Note that myObject doesn't compile as provided. (where's this.HemType?)
The pseudo-Hungarian notation is ok in winforms for naming controls (i.e. the &quot;cbo&quot; prefix for ComboBoxes, &quot;txt&quot; for TextBoxes, etc.) - had you been using current technology (WPF) I would have strongly advised against such naming though.
Nitpicks
You seem to make static anything that can be made static. Don't. Just because a method doesn't use instance members now doesn't mean it never will, and changing a public static void method to be public void, is a breaking change.
vHemEnum doesn't seem to be a type defined anywhere. Typo?
I'll assume the out-of-whack indentation is a Copy+Paste glitch.
Binding?
You say you want databinding, and yet you're doing this:
foreach (var value in values)
{
    var s = GetHemTypeDescription((HemEnum)value.ID );
    cbo.Items.Add(s);
}

Create a type that exposes DisplayValue and EnumValue properties, and use @DanLyons' or @JesseCSlicer's answer to bind your combobox items.
Captions
A more extensible way (vs. attributes) of providing captions for your enums, would be to use a resource file (.resx) - call the strings per the enum's names, and then retrieve the caption from the resource strings:
var description = resx.ResourceManager.GetString(hemType.ToString());


Bottom line, I've seen worse WinForms code (and WPF for that matter), but it could be improved.