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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
15 פוסטים 5 כותבים 264 צפיות 4 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • yossizY yossiz

    @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 מנותק
    yossizY מנותק
    yossiz
    כתב ב נערך לאחרונה על ידי
    #5

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

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

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

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

    תגובה 1 תגובה אחרונה
    1
    • M mekev

      שפה: 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

      משתמש תמיםמ מנותק
      משתמש תמיםמ מנותק
      משתמש תמים
      כתב ב נערך לאחרונה על ידי
      #6

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

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

      yossizY משתמש תמיםמ 2 תגובות תגובה אחרונה
      0
      • משתמש תמיםמ משתמש תמים

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

        yossizY מנותק
        yossizY מנותק
        yossiz
        כתב ב נערך לאחרונה על ידי yossiz
        #7

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

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

        תגובה 1 תגובה אחרונה
        0
        • משתמש תמיםמ משתמש תמים

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

          משתמש תמיםמ מנותק
          משתמש תמיםמ מנותק
          משתמש תמים
          כתב ב נערך לאחרונה על ידי משתמש תמים
          #8

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

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

          תגובה 1 תגובה אחרונה
          1
          • dovidD dovid

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

            חגיח מנותק
            חגיח מנותק
            חגי
            כתב ב נערך לאחרונה על ידי
            #9

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

            dovidD תגובה 1 תגובה אחרונה
            0
            • חגיח חגי

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

              dovidD מנותק
              dovidD מנותק
              dovid
              ניהול
              כתב ב נערך לאחרונה על ידי dovid
              #10

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

              • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
              • בכל נושא אפשר ליצור קשר dovid@tchumim.com
              תגובה 1 תגובה אחרונה
              1
              • M mekev

                שפה: 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

                M מנותק
                M מנותק
                mekev
                כתב ב נערך לאחרונה על ידי
                #11

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

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

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

                חגיח yossizY 2 תגובות תגובה אחרונה
                4
                • M mekev

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

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

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

                  חגיח מנותק
                  חגיח מנותק
                  חגי
                  כתב ב נערך לאחרונה על ידי
                  #12

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

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

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

                  תגובה 1 תגובה אחרונה
                  0
                  • M mekev

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

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

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

                    yossizY מנותק
                    yossizY מנותק
                    yossiz
                    כתב ב נערך לאחרונה על ידי
                    #13

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

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

                    M תגובה 1 תגובה אחרונה
                    1
                    • yossizY yossiz

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

                      M מנותק
                      M מנותק
                      mekev
                      כתב ב נערך לאחרונה על ידי mekev
                      #14

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

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

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

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

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

                      yossizY תגובה 1 תגובה אחרונה
                      0
                      • M mekev

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

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

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

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

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

                        yossizY מנותק
                        yossizY מנותק
                        yossiz
                        כתב ב נערך לאחרונה על ידי yossiz
                        #15

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

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

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

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

                        תגובה 1 תגובה אחרונה
                        2
                        • dovidD dovid העביר נושא זה מ-תכנות ב-
                        תגובה
                        • תגובה כנושא
                        התחברו כדי לפרסם תגובה
                        • מהישן לחדש
                        • מהחדש לישן
                        • הכי הרבה הצבעות


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

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

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