To reproduce, use the following class:
public class NullableDummy
{
public bool? Bool { get; set; }
public byte? Byte { get; set; }
public char? Char { get; set; }
public decimal? Decimal { get; set; }
public float? Float { get; set; }
public int? Int { get; set; }
public long? Long { get; set; }
public sbyte? Sbyte { get; set; }
public short? Short { get; set; }
public string String { get; set; }
public ulong? Ulong { get; set; }
public ushort? Ushort{ get; set; }
}
And set it as a selected object of the property grid:
NullableDummy dummy = new NullableDummy();
this.propertyGrid.SelectedObject = dummy;
Change the Byte Property you will see that the value is not being set.