Settare il default button via codice

Questa è un altra di quelle cagatine che non mi ricordo mai e tutte le volte devo riguardarmele.
Per settare il default button di una form via codice si deve fare cosi:

Form.DefaultButton = btnInvia.UniqueID;

Anche se in molti esempi ho trovato gente che dice di usare l’id a me funziona solo con l’UniqueID.

Spero possa servire a qualcuno

BusinessObjectColumn

Prendendo “spunto” da questo post di Paul Stovell ho creato una dataColumn che mi permette di accedere le property di un entity collegata ad un altra nel mio sistema di BusinessObject.
Il tutto ovviamente funziona tramite reflection.
Per ora posto il codice mi riservo poi di commentarlo visto i miei tempi biblici non aspettatevelo e brave, ma intanto potrebbe esservi utile. 🙂

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Windows.Forms;
using System.ComponentModel;

public class BusinessObjectColumn : DataGridViewTextBoxColumn
{
private String mPropertyName;
public String PropertyName
{
get { return ((BusinessObjectCell)base.CellTemplate).PropertyName; }
set { ((BusinessObjectCell)base.CellTemplate).PropertyName = value; }
}
public BusinessObjectColumn(): base()
{
base.CellTemplate = new BusinessObjectCell();
}

public BusinessObjectColumn(string pPropertyName) : base()
{
mPropertyName = pPropertyName;
base.CellTemplate = new BusinessObjectCell(pPropertyName);

}
public override DataGridViewCell CellTemplate
{
get{return base.CellTemplate;}
set { }
}

}

public class BusinessObjectCell : DataGridViewTextBoxCell
{
private string mPropertyName;
public string PropertyName
{
get { return mPropertyName; }
set { mPropertyName = value; }
}
public BusinessObjectCell() : base(){}
public BusinessObjectCell(string pPropertyName) : base()
{
mPropertyName = pPropertyName;
}
protected override object GetFormattedValue(object value,int rowIndex,ref DataGridViewCellStyle cellStyle,System.ComponentModel.TypeConverter valueTypeConverter,System.ComponentModel.TypeConverter formattedValueTypeConverter,System.Windows.Forms.DataGridViewDataErrorContexts context)
{
PropertyInfo pinf = value.GetType().GetProperty(mPropertyName);
return pinf.GetValue(value, null);
}
public override object Clone()
{
BusinessObjectCell dataGridViewCell = base.Clone() as BusinessObjectCell;
if (dataGridViewCell != null)
{
dataGridViewCell.PropertyName = this.PropertyName;
}
return dataGridViewCell;
}
}

Edit: Ho sostituito la formattazione fatta con il formattatore esterno con quello fornito da wordpress ma ancora non ci siamo al 100% appena posso lo sistemo.