ABA


"איך אני בודק אם כפתור נוגע בגבול קצה של form ?"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15930 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15930
Nexus

   19:00   06.06.10   
אל הפורום  
  איך אני בודק אם כפתור נוגע בגבול קצה של form ?  
 
   עשיתי פה קוד פשוט שאני מזיז עם העכבר כפתור לאורך ציר Y ואני רוצה שכשאני מגיע עם הכפתור למעלה או למטה לגבול של ה FORM1 שזה לא יגלוש החוצה אלא ייעצר יעמוד במקום שיהיה אפשר להזיז את הכפתור רק בתוך התחום של ה FORM1.

ניסיתי ולא הבנתי איך אני בודק את זה עם IF .


using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Moving_Button
{
public partial class Form1 : Form
{


Point lastClick;
Form f = new Form();

public Form1()
{
InitializeComponent();

f.Location = new Point(0, 0);

}



private void button1_MouseDown(object sender, MouseEventArgs e)
{
lastClick = new Point(e.X, e.Y);

}


private void button1_MouseMove(object sender, MouseEventArgs e)
{

if (e.Button == MouseButtons.Left) //Only when mouse is clicked
{


//Move the Form the same difference the mouse cursor moved;
// button1.Left += e.X - lastClick.X;
button1.Top += e.Y - lastClick.Y;

}

}


}
}


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  :| ronen333  06.06.10 21:01 1
     ד''א ממליץ לך במקרה הזה לא להשתמש באירוע MouseMove ronen333  06.06.10 21:08 2
     צריך לתקן את מה שכתבתי... ronen333  07.06.10 12:35 3

       
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   21:01   06.06.10   
אל הפורום  
  1. :|  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 06.06.10 בשעה 21:12 בברכה, ronen333
 
פשוט תעשה שהX או הY חוצים את המנימום של גודל החלון או המקסימום של גודל החלון אז זה יחזור למצב המנימום, מקסימום.
קח את הקוד-

if (e.Button == MouseButtons.Left)
{
int maxScreenHeight=this.Height-button1.Size.Height;
int maxScreenWidth=this.Width-button1.Size.Width;

//Move the Form the same difference the mouse cursor moved;
// button1.Left += e.X - lastClick.X;
button1.Top += e.Y - lastClick.Y;

if(button1.Left<0)
button1.Left=0;
if(button1.Top<0)
button1.Top=0;

if(button1.Left>maxScreenWidth)
button1.Left=maxScreenHeight;
if(button1.Left>maxScreenWidth)
button1.Left=maxScreenHeight;
}


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   21:08   06.06.10   
אל הפורום  
  2. ד''א ממליץ לך במקרה הזה לא להשתמש באירוע MouseMove  
בתגובה להודעה מספר 1
 
   עכבר שזז זה דבר שקורה בתדירות גבוהה מאוד. תחשוב שהפונקציה הזו תזומן כל כך הרבה פעמים ותעבור בדיקות, כאשר למעשה לא צריך. הרי אתה בא לבדוק אם הקליקו על קליק שמאלי...
בקיצור מאוד לא מומלץ.

במקום זאת הייתי ממליץ לך לעבור לאירוע MouseDown.
לחיצה זה דבר בתדירות הרבה יותר נמוכה...
יש מצב שאפילו תוכל להפעיל אירוע יותר מתאים עם תדירות יותר נמוכה...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   12:35   07.06.10   
אל הפורום  
  3. צריך לתקן את מה שכתבתי...  
בתגובה להודעה מספר 1
 
  

if (e.Button == MouseButtons.Left)
{
int maxScreenHeight=this.Height-button1.Size.Height;
int maxScreenWidth=this.Width-button1.Size.Width;

//Move the Form the same difference the mouse cursor moved;
// button1.Left += e.X - lastClick.X;
button1.Top += e.Y - lastClick.Y;

if(button1.Left<0)
button1.Left=0;
if(button1.Top<0)
button1.Top=0;

if(button1.Left>maxScreenWidth)
button1.Left=maxScreenHeight;
if(button1.Top>maxScreenHeight)
button1.Top=maxScreenHeight;
}


עשיתי העתק הדבק בלי לשנות בטעות...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net