דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. איך ניתן להוסיף פס גלילה (Scrollbar) לתא בעמודה ספציפית בטבלה (c# - winforn)

איך ניתן להוסיף פס גלילה (Scrollbar) לתא בעמודה ספציפית בטבלה (c# - winforn)

מתוזמן נעוץ נעול הועבר תכנות
15 פוסטים 5 כותבים 250 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • M מנותק
    M מנותק
    mekev
    כתב ב נערך לאחרונה על ידי
    #1

    שפה: c# - winforn

    שאלה:
    איך ניתן להוסיף פס גלילה (Scrollbar) ל'תא' בעמודה ספציפית בdataGridView

    רקע:
    יש לי dataGridView שרוחב העמודות קבוע
    וכאשר תוכן התא גולש מרוחב העמודה, הטקסט ממשיך בשורה נוספת (וגובה העמודה גדל בהתאמה)

    היות ולפעמים הטקסט מגיע לכמה מאות תווים
    מאוד קשה לגלול ולקרוא את מלוא הנתונים בטבלה

    הפתרון שאני מעוניין זה להגדיר לתא גובה קבוע, ולהוסיף לתא פס גלילה

    העליתי בחכתי עד כה:

     private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
            {
          
                if ((e.Control is TextBox) && e.CellStyle.WrapMode == DataGridViewTriState.True)
                {
                    TextBox textBox = e.Control as TextBox;              
                    textBox.ScrollBars = ScrollBars.Vertical;
                }
    
    
            }
    

    אבל זה נתן לי את התוצאה רק בעת עריכת התא (כי זה נמצא באירוע של העריכה)
    בעוד שאני מעוניין שזה יהיה זמין כל הזמן (בפרט שאני לא מאפשר את העריכה, אלא קריאה בלבד)


    בחשבשבת זה קיים (רק שאינני יודע באיזה שפה נכתבה)
    d1ca32d7-afd3-4b10-a1cd-cf7435fa0e23-image.png

    yossizY חגיח משתמש תמיםמ M 4 תגובות תגובה אחרונה
    0
    • yossizY מנותק
      yossizY מנותק
      yossiz
      השיב לmekev ב נערך לאחרונה על ידי yossiz
      #2

      @mekev אמר באיך ניתן להוסיף פס גלילה (Scrollbar) לתא בעמודה ספציפית בטבלה (c# - winforn):

      אבל זה נתן לי את התוצאה רק בעת עריכת התא (כי זה נמצא באירוע של העריכה)

      הבעיה היא לא רק שהקוד הזה נקרא רק בעת עריכת התא, יש בעיה יותר יסודית,
      בעת עריכת התא, אז התא באמת מארח קונטרול מסוג TextBox המוכר אשר מאפשר הוספת פס גלילה, אומנם במצב קריאה בלבד, אז התא לא מארח קונטרול מוכר אלא מממש לוגיקת צביעה מותאם אישית שאין לך הרבה שליטה עליו חוץ ממה שמייקרוסופט נידבו לך.

      הפתרון כנראה הוא שבמקום שהתא/עמודה יהיו מסוג DataGridViewTextBoxCell/DataGridViewTextBoxColumn, במקום זה תעשה סוג תא/עמודה מותאם אישית שמארח קונטרול שנותן לך את האפשרויות שאתה מבקש.

      עיין כאן:
      https://docs.microsoft.com/en-us/dotnet/desktop/winforms/controls/how-to-host-controls-in-windows-forms-datagridview-cells?view=netframeworkdesktop-4.8

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

      עריכה2: פה יש דוגמה איך להשתמש בקונטרול משלך בתוך DataGridViewCell, זה קצת מסובך אבל נראה אפשרי

      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

      yossizY תגובה 1 תגובה אחרונה
      4
      • חגיח מנותק
        חגיח מנותק
        חגי
        השיב לmekev ב נערך לאחרונה על ידי
        #3

        @mekev
        יתכן מאוד שחשבשבת יצרו את הUI שלהם עם HTML ופקד WebBrowser (שמבוסס על IE, אבל בינתיים עובד).

        dovidD תגובה 1 תגובה אחרונה
        0
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          השיב לחגי ב נערך לאחרונה על ידי dovid
          #4

          @חגי לא, זה winforms.
          אולי הם השתמשו בחבילה של פקדים של צד שלישי, לא נראה לי.

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          חגיח תגובה 1 תגובה אחרונה
          0
          • yossizY מנותק
            yossizY מנותק
            yossiz
            השיב לyossiz ב נערך לאחרונה על ידי
            #5

            @yossiz אמר באיך ניתן להוסיף פס גלילה (Scrollbar) לתא בעמודה ספציפית בטבלה (c# - winforn):

            עריכה2: פה יש דוגמה איך להשתמש בקונטרול משלך בתוך DataGridViewCell, זה קצת מסובך אבל נראה אפשרי

            סליחה, עכשיו עברתי על התשובה שם, והוא מדגים איך לממש Paint מותאם אישית על DataGridViewCell אבל אין שם הדגמה איך להכניס פקד, בתחילת התשובה הוא מקדיש כמה מילים להסביר איך להכניס פקד. הרעיון דומה, בעת אירוע paint במקום לצבוע את האיזור תמקם שם פקד. אבל זה מרגיש לי קצת טריקי...

            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

            תגובה 1 תגובה אחרונה
            1
            • משתמש תמיםמ מנותק
              משתמש תמיםמ מנותק
              משתמש תמים
              השיב לmekev ב נערך לאחרונה על ידי
              #6

              @mekev
              מכאן זה נראה שזה לא קיים 😞 (נכון ל2019 לפחות)

              עזרתי לך? תראה לי את זה על ידי לחיצה על ה^ בצד שמאל למטה.

              yossizY משתמש תמיםמ 2 תגובות תגובה אחרונה
              0
              • yossizY מנותק
                yossizY מנותק
                yossiz
                השיב למשתמש תמים ב נערך לאחרונה על ידי yossiz
                #7

                @משתמש-תמים מדובר שם על פקד של חברה אחרת, לא המובנה של winforms.
                אבל זה בטוח לא קיים, כי בדקתי את קוד המקור של הפקד של winforms, ואין שם אפשרות לגלילה.

                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                תגובה 1 תגובה אחרונה
                0
                • משתמש תמיםמ מנותק
                  משתמש תמיםמ מנותק
                  משתמש תמים
                  השיב למשתמש תמים ב נערך לאחרונה על ידי משתמש תמים
                  #8

                  @yossiz ראיתי שזה aשל חברה האחרת אבל ההיגיון שלי אומר אמר שהם לא באו להוריד את מה שיש בבסיס.

                  עזרתי לך? תראה לי את זה על ידי לחיצה על ה^ בצד שמאל למטה.

                  תגובה 1 תגובה אחרונה
                  1
                  • חגיח מנותק
                    חגיח מנותק
                    חגי
                    השיב לdovid ב נערך לאחרונה על ידי
                    #9

                    @dovid
                    זה גם קיים בwinforms

                    dovidD תגובה 1 תגובה אחרונה
                    0
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      השיב לחגי ב נערך לאחרונה על ידי dovid
                      #10

                      @חגי לא התכוונתי שהמעטפת winforms.
                      התכוונתי שהפקד עצמו הוא מרונדר כwinforms ולא כhtml.
                      זה מאוד קל לזהות.

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      תגובה 1 תגובה אחרונה
                      1
                      • M מנותק
                        M מנותק
                        mekev
                        השיב לmekev ב נערך לאחרונה על ידי
                        #11

                        @mekev
                        אחרי שניסיתי לדוג במודעות דרושים של חשבשבת במרחבי גוגל (בדרישות תפקיד - שפות תכנות) ולא עלתה בידי

                        אזרתי כגבר חלצי
                        ופניתי לחשבשבת
                        ובאדיבות ובסבלנות רבה ענו
                        שלמרות שלפי השנתון זה מתאים לwinform
                        זה לא בנוי בC# כלל

                        ועדיין @yossiz ושאר המשתמשים החשובים עזרתם לי מאוד
                        כי עברתי לחפש במקום איך לבצע 'פס גלילה' ל 'איך להוסיף פקד'
                        והיות שפקד של לוח שנה הינו נפוץ ונצרך יותר
                        אכן מצאתי כאן וכאן ויתכן שיש עוד,
                        רק שטרם הספקתי לבדוק את פעילות הקוד ובעיקר איך אני ממיר את זה לצרכים שלי

                        חגיח yossizY 2 תגובות תגובה אחרונה
                        4
                        • חגיח מנותק
                          חגיח מנותק
                          חגי
                          השיב לmekev ב נערך לאחרונה על ידי
                          #12

                          @mekev אמר באיך ניתן להוסיף פס גלילה (Scrollbar) לתא בעמודה ספציפית בטבלה (c# - winforn):

                          ועדיין @yossiz ושאר המשתמשים החשובים עזרתם לי מאוד
                          כי עברתי לחפש במקום איך לבצע 'פס גלילה' ל 'איך להוסיף פקד'
                          והיות שפקד של לוח שנה הינו נפוץ ונצרך יותר
                          אכן מצאתי כאן וכאן ויתכן שיש עוד,
                          רק שטרם הספקתי לבדוק את פעילות הקוד ובעיקר איך אני ממיר את זה לצרכים שלי

                          הם ענו לך במה זה כתוב?
                          vb6 עם פקדי activex?
                          delphi?

                          תגובה 1 תגובה אחרונה
                          0
                          • yossizY מנותק
                            yossizY מנותק
                            yossiz
                            השיב לmekev ב נערך לאחרונה על ידי
                            #13

                            @mekev יש לי רעיון פשוט שאולי יתאים לך
                            תגביל את הגודל של המחרוזת שהתא מקבל,
                            ואם זה יותר מגודל התא תראה את זה בטולטיפ בעת hover

                            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                            M תגובה 1 תגובה אחרונה
                            1
                            • M מנותק
                              M מנותק
                              mekev
                              השיב לyossiz ב נערך לאחרונה על ידי mekev
                              #14

                              @yossiz אמר באיך ניתן להוסיף פס גלילה (Scrollbar) לתא בעמודה ספציפית בטבלה (c# - winforn):

                              אם זה יותר מגודל התא תראה את זה בטולטיפ בעת hover

                              בברירת מחדל של dataGridView זה אכן כך

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

                              ולכן גם הפתרון לעשות פאנל עם תווית-טקסט ולהכניס אותו לאירוע בעת העברת העכבר לא יעזור לי במקרה דנן

                              yossizY תגובה 1 תגובה אחרונה
                              0
                              • yossizY מנותק
                                yossizY מנותק
                                yossiz
                                השיב לmekev ב נערך לאחרונה על ידי yossiz
                                #15

                                @mekev אמר באיך ניתן להוסיף פס גלילה (Scrollbar) לתא בעמודה ספציפית בטבלה (c# - winforn):

                                אין סימן למשתמש לדעת שאמור להיות שורה נוספת כדי לבצע ריחוף על התא

                                את זה תוכל לפתור על ידי הוספת סימון כלשהו שיסב את תשומת הלב של המשתמש
                                תוכל להוסיף את הסימון לתוכן של התא באירוע CellFormatting או בצורה יותר מסובכת, להתאים אישית את ה-paint של התא, כמו שמתועד פה

                                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                                תגובה 1 תגובה אחרונה
                                2
                                • dovidD dovid העביר נושא זה מ-תכנות ב-

                                בא תתחבר לדף היומי!
                                • התחברות

                                • אין לך חשבון עדיין? הרשמה

                                • התחברו או הירשמו כדי לחפש.
                                • פוסט ראשון
                                  פוסט אחרון
                                0
                                • דף הבית
                                • קטגוריות
                                • פוסטים אחרונים
                                • משתמשים
                                • חיפוש
                                • חוקי הפורום