Народ, у меня такая проблема возникла, я пишу на C++ под платформы .NET.Мне нужно что бы у меня форма сначало обработывала клавиатуру, а затеам contol, как это сделать для стрелок, на клавиатуре, (KeyPreview=true я поставил) у меня при нажатии стрелок перемещается фокус между двух кнопок и всё.
| Код | void createform1() { child = new Form(); child->Width=600; child->Height=600; child->MdiParent = this; child->KeyPress += new KeyPressEventHandler(this,&MyForm::AsciiCod);
child->Show(); initlabel(); InitButton(); }
|
Код InitButton
| Код | void InitButton() { poButton=new Button(); poKey=new Button(); poButton->Top=150; poButton->Left=310; poButton->Text="New"; poButton->BackColor=Color::Blue; poButton->Click +=new EventHandler(this,&MyForm::create); child->Controls->Add(poButton); poKey->Top=120; poKey->Left=220; poKey->Text="Text"; poKey->Click +=new EventHandler(this,&MyForm::create1);
/*pTb= new TextBox(); pTb->Top=120; pTb->Left=350;*/
// this->child->Controls->Add(pTb); this->child->Controls->Add(poKey); child->KeyPreview=true; child->KeyUp+= new KeyEventHandler(this,&MyForm::ClearLab); child->KeyDown+= new KeyEventHandler(this,&MyForm::Work);
}
|
Код intilabel
| Код |
void initlabel() { lb1= new Label(); lb2= new Label(); lb3= new Label(); lb4= new Label(); lb5= new Label(); lb6= new Label(); lb7= new Label(); lb1->Text="Keypress Character"; lb1->Left=10; lb1->Top=10; lb1->BorderStyle=System::Windows::Forms::BorderStyle::FixedSingle; lb2->Text="Key down value"; lb2->Left=10; lb2->Top=40; lb2->BorderStyle=System::Windows::Forms::BorderStyle::FixedSingle; lb3->Size=System::Drawing::Size(100,50); lb3->Text=S"Special Key Alt: Shift: Ctrl:"; lb3->Left=10; lb3->Top=60; lb3->BorderStyle=System::Windows::Forms::BorderStyle::FixedSingle; lb4->Text="F12"; lb4->Left=200; lb4->Top=10; lb4->BorderStyle=System::Windows::Forms::BorderStyle::FixedSingle;
lb5->Text="123"; lb5->Left=200; lb5->Top=40; lb5->BorderStyle=System::Windows::Forms::BorderStyle::FixedSingle; lb6->Size=System::Drawing::Size(250,50); lb6->Text=" "; lb6->Left=200; lb6->Top=62; lb6->BorderStyle=System::Windows::Forms::BorderStyle::FixedSingle;
lb7->Text="Press any key and hold down Shift, Alt,and Ctrl keys to see their ASCII and virtual key values. "; lb7->Left=310; lb7->Top=10; lb7->Size=System::Drawing::Size(120,52); lb7->BorderStyle=System::Windows::Forms::BorderStyle::FixedSingle;
child->Controls->Add(lb1); child->Controls->Add(lb2); child->Controls->Add(lb3); child->Controls->Add(lb4); child->Controls->Add(lb5); child->Controls->Add(lb6); child->Controls->Add(lb7);
}
|
причём если раскоментировать код в InitButton, то будет работать. |