Попробуйте это, добавив tmpRichTextBox в tmpTabPage, а затем добавив tmpTabPage в tabControl1
TabPage tmpTabPage = new TabPage("Test");
CustomRichTextBox tmpRichTextBox = new CustomRichTextBox();
tmpRichTextBox.LoadFile(@"F:\aaData\IPACostData\R14TData\ACT0\1CALAEOSAudit_log.rtxt");
// Attempted FIX.
tmpTabPage.SuspendLayout();
tmpTabPage.Controls.Add(tmpRichTextBox); // This throws a NullReferenceException??
tmpTabPage.ResumeLayout();
tmpRichTextBox.Parent = tmpTabPage;
tmpRichTextBox.WordWrap = tmpRichTextBox.DetectUrls = false;
tmpRichTextBox.Font = new Font("Consolas", 7.8f);
tmpRichTextBox.Dock = DockStyle.Fill;
tmpRichTextBox.BringToFront();
//tmpTabPage.Controls.Add(tmpRichTextBox);
tabControl1.TabPages.Add(tmpTabPage);
Как вы уже выяснили, вам следует использовать registerClassAlias, поскольку RemoteClass работает "из коробки" только для проектов Flex (с возможностью связывания и т. Д.).
Обязательно вызовите registerClassAlias перед любой сериализацией / десериализацией.
Кроме того, отладчик показывает вам действительную разновидность вашего параметра «o», который является объектом. Это показывает, что проигрыватель неправильно сопоставляет класс сериализованного объекта AMF с каким-либо из ваших классов (поэтому по умолчанию он идет с Object). Вы должны увидеть объект LobbyData в отладчике; в противном случае, как бы вы его не применяли / принуждали, это не сработает.
Objet необходимо объявить до вызова ответчика.
public function refreshRoom(event:Event)
{
var testObject:LobbyData=new LobbyData;
var resp:Responder=new Responder(handleResp,null);
ncLobby.call("getLobbyData", resp, null);
}
public function handleResp(o:Object):void
{
testObject = o as LobbyData;
trace(testObject);
}