can anybody explain the different between
current culture and current ui culture
I am a bit confuse about it



Pretty much as it says. The CurrentCulture ought to be the culture of the machine, whereas the UI Culture is the culture of the program you're currently running.

This is prevalent in WPF, where the UI Culture is automatically set to en-US by default for some reason regardless of the input culture (which is how it should be set).
You can over-ride the UI Culture, which is what I tend to do by setting the Thread.Current.CurrentCulture and Thread.Current.CurrentUICulture BEFORE the call to InitializeComponent(); There is a way to make it application wide as soon as your program boots up, but this is bad design and I can't remember how to do it off the top of my head.