Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3102 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

(redaguota)

Sveiki,

 

nesenai pradėjau mokytis WinForms ir bandau išsiaiškinti kaip reiktų gauti siuntėjo ("sender'io") (pelės) poziciją (koordinates). Bandžiau ieškoti MSDN, bet nieko, kas man būtų tinkama, neradau.

Štai mano bandymas, kuris, gaila, baigėsi error'u:

private: System::Void pictureBox1_MouseHover(System::Object^ sender, System::EventArgs^ e) {
    this->pictureBox1->Location = System::Drawing::Point(sender::Position.X - 5, sender::Position.Y - 5);
    MessageBox::Show("Keep away!", "Shoo", MessageBoxButtons::OK, MessageBoxIcon::Stop);
}

Taigi mano klausimas yra gana aiškus (nors taip manau): kaip reikia gauti siuntėjo poziciją (šiuo atveju, pelės). Paaiškinimai taip pat padėtų, dėkui.

 

Atsakymas

 

Kiek pamąstęs, radau kiek ilgesnio kelio, bet vis gi veikiantį variantą.

 

Pirmiausia, namespace'e sukuriu boolean'ą su false (neigiama) reikšme (ji pasikeis į true (teigiamą), kai pelė palies paveiksliuką). Tada sukuriu du naujus metodus: pirmą skirtą pelės XY gauti ir kodo vykdymui, kai pelė liečia paveiksliuką; antrą - nustatyti, ar pelė liečia paveiksliuką, ar ne.

private: System::Void picture_MouseMove(Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
    int VMouseX = e->X,
        VMouseY = e->Y;
    if (VMouseEntered) {
        VMouseEntered = false;
        this->picture->Location = System::Drawing::Point(VMouseX + 17, VMouseY + 17);
    }
}
 
private: System::Void picture_MouseEnter(System::Object^ sender, System::EventArgs^ e) {
    VMouseEntered = true;
}

Tada sukuriu du naujus EventHandler'ius paveiksliukui. Pirmasis EventHandler'is skirtas pelės judesių klausymuisi. Antrasis - nustatyti, ar pelė liečia paveiksliuką, ar ne.

this->picture->MouseMove += gcnew System::Windows::Forms::MouseEventHandler(this, &Form1::picture_MouseMove);
this->picture->MouseEnter += gcnew System::EventHandler(this, &Form1::picture_MouseEnter);

Viskas. Tikiuosi, jog kažkam pravers.

P.S: jei kam, dėl kažkokių keistų priežasčių, reikia klausimo ir atsakymo stackoverflow'e, štai jis: http://stackoverflow.com/questions/40427101/how-to-get-the-senders-position-coordinates-in-windows-form-application/40453992#40453992

Redaguota , nario a baffled moose

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3102 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai



×
×
  • Sukurti naują...