It has to do with strong-typing. Your method has a parameter defined as a System.Int32. Any controls "Text" property is defined as a System.String. By passing just the Control.Text, you are passing a string typed value and the method expects integer. When you added the CInt(), it converted the text to Integer as the method was expecting. .NET is a strong-typed development environment. You cannot rely on automatic data conversions like other languages such as Visual FoxPro. This is actually a VERY good thing. You learn about type conversions either a compile time or very quickly when an app is run. So most of the "Data Type Mistmatch" error from the old days are gone.Just FYI, I would not use CInt(). It is very slow and is an obselete method. You should do most of your type conversions like this:
CType(Control.Text, System.Integer)