这次在C ++ 9(VS2008)中我试图将“System :: Object ^ sender”转换为它所代表的Control类型。
这特别是在TextBox_TextChanged事件函数中。
我知道这在C#中工作得很好,但是当我在C ++中尝试时我遇到了错误,而且我似乎无法找到C ++的等价物。
给我错误的C ++代码。 。
System::Void txtEmplNum_TextChanged(System::Object^ sender, System::EventArgs^ e)
{
TextBox thisBox = sender as TextBox ;
}
导致的错误。 。
Error 1 error C2582: 'operator =' function is unavailable in 'System::Windows::Forms::TextBox' c:\projects\nms\badgescan\frmMain.h 673 BadgeScan
欢迎任何想法。
谢谢!
答案 0 :(得分:7)
我想你可能想试试这个:
System::Void txtEmplNum_TextChanged(System::Object^ sender, System::EventArgs^ e)
{
TextBox^ thisBox = safe_cast<TextBox^>(sender);
}
答案 1 :(得分:0)
您在上面提供的代码不是C ++。 C ++没有&#34; as&#34;关键词;该方法是为c ++正确编写的,但代码块是错误的。
System::Void txtEmplNum_TextChanged(System::Object^ sender, System::EventArgs^ e)
{
// This is not C++.
TextBox thisBox = sender as TextBox;
// This is C++ as already stated above.
TextBox^ tb = safe_cast<TextBox^>(sender);
// Or you can just do this if you don't need a handle beyond
// this line of code and just want to access a property or a method.
safe_cast<TextBox^>(sender)->Text = "Some Text";
}