בקשת עזרה בלוגיקה של קוד בC# ליצירת כפתורי "צעד אחורה / קדימה"
-
אני מנסה ליצור כפתורי אחורה קדיימה כמו שיש ב visual studio
מה שייחודי בכפתורים האלה שהם חוזרים אחורה קדימה בין הטאבים שנהיו אקטיבים לאחרונה ולא רק בין המסמכים שנפתחו.
איך אני עושה שהסדר של הביקור בין הטאבים יישמר.
בשלמא אם רק הייתי צריך ללכת אחורה וקדימה ברשימה. אבל כאן זה לא המקרה כי המשתמש מאקטב טאבים לא לפי הסדר ברשימה.הסבר:
כשפותחים קובץ חדש נוסף פריט לרשימה.
עכשיו בוא נגיד יש למשתמש 5 מסמכים פתוחים והרשימה מסודרת מ-1 עד 5
אם המשתמש ילחץ על כפתור אחרוה הרי הוא יחזור למסמך 4 וכו'. -EASY!אבל מה קורה כשהמשתמש עבר באופן ידני למסמך3 שלוש ואז הוא לוחץ על הכפתור חזור אחורה - מה שאני רוצה שיקרה הוא שיחזור למסמך האחרון בו ביקר המשתמש. ולא למסמך מספר 2 ברשימה.
והעסק יכול מאוד מהר להסתבך אם המשתמש רוצה עכשיו לחזור קדימה ג"כ.
בקיצור אין לי מושג איך לאכול את העסק הזה.
אולי הפתרון פשוט אבל אני לא רואה בעצמי איך לעשות זאת.תודה מראש
מקווה ששאלתי מספיק ברור -
דבר ראשון הקדימה אחורה של הVS הם לא על טאבים, הם גם ברמת שורה באותו מסמך וגם אם המסמך נסגר (כך שזה לא בדיוק טאבים אלא מסמכים).
בא נאפיין את זה:
יש לנו רשימת מיקומים (כל מיקום זה מסמך + שורה)
יש לנו מיקום פעיל נוכחי (נניח שזה משתנה מספרי ש0 משמעותו שורה אחרונה שהוסיפו).
בכל פעולה של ניווט (מעבר שורה, וקל וחומר מסמך)
אנחנו צריכים להוסיף לרשימה את המיקום הנוכחי ולהגדיר מיקום פעיל למיקום האחרון (0).
בעת לחיצה אחורה, משנים את המיקום הנוכחי ל+1, ומשמעותו שורה אחת לפני האחרונה, ומעבירים את הפוקוס למיקום המתאים.
בכל מצב שבו המיקום נוכחי > 0 יש לחצן קדימה שמחזיר עד ל0.