A field is a variable, a property is a syntactic sugar for two methods - a getter and a setter - which get called when you access the property instead of accessing the content of the variable directly.
The advantage of this is two-fold: firstly it allows the containing class to hide the internal implementation of details from the outside world, presenting the property as a "simple variable" when it can in fact be a complex calculation, or based on a control, etc.
Secondly, it allows the property to be "read only", or "write only" as far as the outside world is concerned which is not possible with fields.
Basically, if the outside world needs to know about a value, it should be a property: fields should never be exposed as
public
objects.
For a fuller description, refer to
MSDN[
^] and
Google[
^]