C ++ 9 ::将“System :: Object ^ sender”转换为Control类型

时间:2010-11-30 17:38:55

标签: visual-studio-2008 textbox c++-cli

这次在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

欢迎任何想法。

谢谢!

2 个答案:

答案 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";
}