פורסם 2012 בפברואר 213 שנים יש לי ListBox שאליה אני מכניס קבצים והגדרתי לה Event של MouseHover, אחרי שאני שם את הסמן של העכבר על אחד מהקבצים ב-ListBox אני מריץ כמה שורות קוד שמשתמשות ב-Path של אותו הקובץ אבל פה מתחילה הבעיה שלי כי אני לא מצליח לקלוט את ה-Path.זה הקוד שלי, כרגע רק כשאני מכניס את מספר האובייקט שלי ב-ListBox אני מצליח לקלוט את ה-Path שלו private void listBox_MouseHover(object sender, EventArgs e) { string path = listBox.Items[0].ToString(); if (path != "") { } }
פורסם 2012 בפברואר 213 שנים בבקשה:http://msdn.microsoft.com/en-us/library/kfw3x8dc.aspx או http://msdn.microsoft.com/en-us/library/xkaf4bdy.aspxהפונקציה IndexFromPoint מקבלת נקודה (נניח, הקואורדינטות של העכבר) ומחזירה את מספר האיבר ברשימה שיושב בנקודה הזו.
פורסם 2012 בפברואר 213 שנים מחבר הוא לא מזהה לי את ה-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);
פורסם 2012 בפברואר 213 שנים הדוגמה שם היא לא בדיוק 1 ל-1 מה שאתה רוצה לעשות. קרא את התיעוד, קרא את הדוגמה, תבין מה היא עושה ואיך, ואז תחשוב איך אתה משתמש בפונקציה בעצמך.בשביל לדעת את המיקום הנוכחי של העכבר אתה יכול להשתמש בשדה הסטטי Control.MousePosition.
פורסם 2012 בפברואר 213 שנים ההבדל היחיד בין MouseDown ל-MouseHover הוא שבשני אתה לא מקבל את הקואורדינטות של העכבר. אבל:בשביל לדעת את המיקום הנוכחי של העכבר אתה יכול להשתמש בשדה הסטטי Control.MousePosition.
פורסם 2012 בפברואר 213 שנים מחבר האינדקס יוצא במינוס ואני לא מבין למה 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); }
פורסם 2012 בפברואר 213 שנים קודם כל, אתה יודע מה אומר ערך שלילי? זה כתוב בתיעוד של הפונקציה (ואמור להיות ברור מהדוגמה).חוץ מזה, למה השתמשת ב-PointToClient?חוץ מזה, תשחק עם זה קצת. תדפיס את הקואורדינטות כדי לראות אם זה מה שאתה מצפה לו (נגיד, תדפיס את הקואורדינטות שאתה מקבל ב-MouseDown והקואורדינטות שמצאת ב-MouseHover ותראה שהן מתאימות).
פורסם 2012 בפברואר 213 שנים למה השתמשת ב-PointToClient?כי Cursor.Position וגם Control.MousePosition מחזירים מיקום במסך, וצריך להמיר אותו למיקום על הListBox.האינדקס יוצא במינוס ואני לא מבין למהכי PointToClient יחזיר את המיקום בחלון, ואתה רוצה מיקום על האובייקט, ולכן צריך להשתמש ב listBox.PointToClient.ויש לך שם המון קוד כפול ומיותר.(אגב, אם אני מבין נכון מה אתה מנסה לעשות, יכול להיות שאתה בכלל רוצה להשתמש MouseMove, שכן יש לו e.X ו e.Y.)
פורסם 2012 בפברואר 513 שנים מחבר מה שאני רוצה לעשות זה לקלוט את הסטרינג של האובייקט שיש לי ב-ListBox שבסה"כ הוא Path ואיתו אני עובד.כרגע מה שיש לי זה את ה-X ואת ה-Y שזה המיקום שלי איפה שנגעתי באובייקט ב-ListBox
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.