you mentioned the merits of these prefixes, here's an opinion from a student in programming..
I recently got a summer student job. I got plopped into an office of busy programmers with little time for explaining previous code to me. My first job was to take a database currently in existance and make it better... Add things and optimize previous code (less lines or more efficient is what they wanted)
when reading through code you yourself have not written (at least for me) it is sometimes nearly impossible to destinguish between controls and variables, and harder to destinguish between variable types. These prefixes help with that, alot!
The guys here prefix controls / variable with an abreviation of the type of control / variable. So, text boxes get txt in front standing for 'text' which ud think "textbox" or lst for list, or listbox, and lbl for label, or str for string or int for integer, dbl for dbl, you get the picture.
This way when scrolling thru code and optimizing it or changing, i didnt have to find where things were used or initialized to know what kind of variable they were. And! Especially for controls, when i saw txtname i knew it was the name textbox, and lblname was the label for the name textbox. I didnt have to decipher which was which like i would if they used name1, name2 or something like that. Hope that helps understand the logic behind it abit