C# - GetPositionFromCharIndex

C# - GetPositionFromCharIndex

שלום לכולם אני מנסה לאתר מיקום הסמן של המקלדת בתיבת טקסט. אני רושמת לו:
Point p; p.x=richTextBox1.GetCharIndexFromPosition(richTextBox1.text.Length-1);​
ומקבלת הודעת שגיאה:
E:\C#\Form1.cs(993): 'System.Drawing.Point.x' is inaccessible due to its protection level​
כל סיוע יתקבל בברכה ותודה!
תודה ויום נפלא
 
קודם כל תודה - אבל -

שיניתי:
p.X=richTextBox1.GetCharIndexFromPosition(richTextBox1.text.Length-1).X;​
והוא עדיין בוכה על -
E:\C#\Form1.cs(994): 'System.Windows.Forms.Control.text' is inaccessible due to its protection level​
עוד רעיון?
ושוב תודה
 
הסתדרתי - הנה התיקון -

... p=richTextBox1.GetPositionFromCharIndex(richTextBox1.TextLength-1); .... ....​
תודה בכל מקרה והמשך יום נעים
 
../images/Emo35.gifעוד שאלה- יותר מאתגרת נראה לי...

לילה טוב - השאלה שלי היא כזו: נניח המשתמש הקליד מס' שורות בתיבת הטקסט (richTextBox), ועכשיו הוא הלך עם הסמן (בעזרת חצים במקלדת) אל אמצע שורה כלשהי. הוא מתחיל להקליד מילים באמצע השורה... השאלה - איך אני עולה על המיקום שהוא מקליד בו כרגע??? richtextBox לא מכיר ב-cursor.Position יש לו כל מיני מתודות אחרות של cursor שנדמה לי שהן לא עוזרות לי... האם יש לי דרך לדעת היכן ברגע זה המשתמש מקליד את הטקסט? (מיקום של X Y )
תודה רבה רבה מראש לכל רעיון \ עצה שתתנו לי,
המשך לילה נפלא!
 

gilad g

New member
אממ..

המאפיין SelectionStart מתייחס למיקום של הטקסט ובהיעדר כזה, הוא מחזיר את המיקום של הסמן. או שאולי התכוונת למיקום אבסולוטי בפיקסלים
 
קודם תודה-זה עדיין יכול לעזור../images/Emo26.gif

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

gilad g

New member
היתה לי טעות בהודעה ../images/Emo9.gif

מיקום טקסט = מיקום טקסט נבחר (מסומן בכחול...). אני לא חושב שיש דרך פשוטה במיוחד לחשב את המיקום של הסמן ביחס למסך (שיעורי X Y), בשביל מה את צריכה את המידע הזה?
 
אני אשמח לשמוע גם על דרך לא פשוטה

שוב תודה אז ככה - אני עובדת על פרויקט של בניית editor - שבו אם משתמש מקליד מילים מסויימות באמצע שורה - למשל חזר אחורה בטקסט ורשם -
person.run();​
אז לחיצה על "." אחרי person אמורה להקפיץ לו listBox עם מתודות של person , כמו באדיטורים שאנחנו עובדים איתם - גם כשזה מוקלד באמצע שורה - כלומר גם אם חזר המשתמש עם החצים אחורה בטקסט והשחיל שם... בשביל להקפיץ listBox לפחות מה שהבנתי עד עכשיו - אני צריכה מיקום x y - אני אהיה כמעט מאושרת לגלות שגם מיקום סמן מספיק לצורך כך - יש מצב
ואם לא - כל רעיון - כרגיל - יתקבל בברכה ותודה
המשך יום נפלא
 

gilad g

New member
../images/Emo12.gif

שוב טעיתי - מסתבר שלRichTextBox יש מתודה ששמה GetPositionFromCharIndex. תני לה את ה-SelectionStart בתור פרמטר
רצוי גם שתסתכלי פה - את לא הראשונה שמנסה לעשות intellisense
 
../images/Emo35.gif נוספת וקטנה הפעם...

אני מחפשת גם בקוד שהנית אותי אליו ולא מוצאת: האם יש פקודה שמבצעת את אותה פעולה של append (הוספת מילה לסוף הטקסט שבתיבת הטקסט) - אבל - שאני קובעת לה היכן לדחוף את המילה? כלומר אני נותנת לה אינדקס והיא שמה בפנים את המילה שאני רוצה להכניס למיקום הזה
שוב - המון תודה
והמשך יום מקסים
 

gilad g

New member
המממ

את יכולה למקם את הסמן במקום מסוים בעזרת SelectionStart, ואז לשתול שם טקסט בעזרת SelectedText:
myRtfBox.SelectionStart = <enter number here>; myRtfBox.SelectedText = "Hi!";​
 
../images/Emo141.gifעובד ../images/Emo13.gif |מאושרת| תודה../images/Emo70.gif

השתמשתי רק בשורה השנייה, כי אני משחילה את המילה היכן שנמצא הסמן, וזה מה שקורה כשמקלידים את השורה השניה שרשמת
מוצ'ו גראסייס
 
למעלה