C ++ 9 :: Приведение «System :: Object ^ sender» к типу управления - PullRequest
3 голосов
/ 30 ноября 2010

На этот раз в C ++ 9 (VS2008) я пытаюсь привести «System :: Object ^ sender» к типу Control, который он представляет.

Это специально для функции события TextBox_TextChanged.

Я знаю, что это прекрасно работает в C #, но я получаю ошибки, когда пытаюсь сделать это в C ++, и я не могу найти эквивалент для C ++.

C ++ Code, который дает мне ошибки.,.

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 ]

7 голосов
/ 30 ноября 2010

Я думаю, вы можете попробовать это:

System::Void txtEmplNum_TextChanged(System::Object^  sender, System::EventArgs^  e) 
{ 
    TextBox^ thisBox = safe_cast<TextBox^>(sender); 
} 
0 голосов
/ 07 сентября 2017

Код, который вы указали выше, не является C ++. C ++ не имеет ключевого слова as; Метод написан правильно для 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";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...