עבור לתוכן

C# - איך אני קולט את ה-String ע"י MouseHover מ-ListBox

Featured Replies

פורסם

יש לי ListBox שאליה אני מכניס קבצים והגדרתי לה Event של MouseHover, אחרי שאני שם את הסמן של העכבר על אחד מהקבצים ב-ListBox אני מריץ כמה שורות קוד שמשתמשות ב-Path של אותו הקובץ אבל פה מתחילה הבעיה שלי כי אני לא מצליח לקלוט את ה-Path.

זה הקוד שלי, כרגע רק כשאני מכניס את מספר האובייקט שלי ב-ListBox אני מצליח לקלוט את ה-Path שלו


private void listBox_MouseHover(object sender, EventArgs e)
{
string path = listBox.Items[0].ToString();
if (path != "")
{


}
}

פורסם
  • מחבר

הוא לא מזהה לי את ה-X וה-Y בשורה

  Point pt = new Point(e.X,e.Y);

מה אני אמור להכניס באובייקט של ה-Point ?


ListBox listBox = sender as ListBox;
Point pt = new Point(e.X,e.Y);
int index = listBox.IndexFromPoint(pt);

פורסם

הדוגמה שם היא לא בדיוק 1 ל-1 מה שאתה רוצה לעשות. קרא את התיעוד, קרא את הדוגמה, תבין מה היא עושה ואיך, ואז תחשוב איך אתה משתמש בפונקציה בעצמך.

בשביל לדעת את המיקום הנוכחי של העכבר אתה יכול להשתמש בשדה הסטטי Control.MousePosition.

פורסם
  • מחבר

הצלחתי עם MouseDown כמו בדוגמא אבל אני התכונתי ל-MouseHover

פורסם

ההבדל היחיד בין MouseDown ל-MouseHover הוא שבשני אתה לא מקבל את הקואורדינטות של העכבר. אבל:

בשביל לדעת את המיקום הנוכחי של העכבר אתה יכול להשתמש בשדה הסטטי Control.MousePosition.

פורסם
  • מחבר

תודה.

פורסם
  • מחבר

האינדקס יוצא במינוס ואני לא מבין למה

   private void listBox _MouseHover(object sender, EventArgs e)
{
Point ptCursor = Cursor.Position;
ptCursor = PointToClient(ptCursor);
Point pt = new Point(ptCursor.X, ptCursor.Y);
int itemIndex = listBox .IndexFromPoint(ptCursor);
ListBox listBox = (ListBox)sender;
int index = listBox.IndexFromPoint(pt);

}

פורסם

קודם כל, אתה יודע מה אומר ערך שלילי? זה כתוב בתיעוד של הפונקציה (ואמור להיות ברור מהדוגמה).

חוץ מזה, למה השתמשת ב-PointToClient?

חוץ מזה, תשחק עם זה קצת. תדפיס את הקואורדינטות כדי לראות אם זה מה שאתה מצפה לו (נגיד, תדפיס את הקואורדינטות שאתה מקבל ב-MouseDown והקואורדינטות שמצאת ב-MouseHover ותראה שהן מתאימות).

פורסם

למה השתמשת ב-PointToClient?

כי Cursor.Position וגם Control.MousePosition מחזירים מיקום במסך, וצריך להמיר אותו למיקום על הListBox.

האינדקס יוצא במינוס ואני לא מבין למה

כי PointToClient יחזיר את המיקום בחלון, ואתה רוצה מיקום על האובייקט, ולכן צריך להשתמש ב listBox.PointToClient.

ויש לך שם המון קוד כפול ומיותר.

(אגב, אם אני מבין נכון מה אתה מנסה לעשות, יכול להיות שאתה בכלל רוצה להשתמש MouseMove, שכן יש לו e.X ו e.Y.)

פורסם
  • מחבר

מה שאני רוצה לעשות זה לקלוט את הסטרינג של האובייקט שיש לי ב-ListBox שבסה"כ הוא Path ואיתו אני עובד.

כרגע מה שיש לי זה את ה-X ואת ה-Y שזה המיקום שלי איפה שנגעתי באובייקט ב-ListBox

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים