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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. עזרה בטפסי ויזואל סטודיו C#

עזרה בטפסי ויזואל סטודיו C#

מתוזמן נעוץ נעול הועבר תכנות
21 פוסטים 3 כותבים 1.0k צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD dovid

    דוגמה:

    private void PrintDgv(DataGridView dgv)
    {
        var strB = new StringBuilder();
            
        strB.Append("<table>");
        strB.Append("<thead><tr>");
    
        foreach (DataGridViewColumn col in dgv.Columns)
        {
            strB.Append("<th>");
            strB.Append(col.HeaderText);
            strB.Append("</th>");
        }
    
        strB.Append("</tr></thead>");
    
        bool odd = true;
        foreach (DataGridViewRow row in dgv.Rows)
        {
            strB.Append("<tr>");
            foreach (DataGridViewCell cell in row.Cells)
            {
                strB.Append("<td>");
                strB.Append(cell.Value);
                strB.Append("</td>");
            }
            strB.Append("</tr>");
        }
    
    
        strB.Append("</table>");
    
        var webBrowser1 = new WebBrowser();
        webBrowser1.Visible = false;
        webBrowser1.Parent = this;
        webBrowser1.DocumentText = strB.ToString();
    
        webBrowser1.DocumentCompleted += (s, e) => webBrowser1.ShowPrintPreviewDialog();
    }
    
    Sara RivkaS
    Sara RivkaS
    Sara Rivka
    כתב ב נערך לאחרונה על ידי
    #11

    @dovid צריך בשביל זה חיבור לאינטרנט?
    (אני לא מתמצאת בHTML)

    תגובה 1 תגובה אחרונה
    0
    • dovidD
      dovidD
      dovid
      ניהול
      כתב ב נערך לאחרונה על ידי dovid
      #12

      לא.
      תעתיקו את הקוד שהבאתי, תקראו לפונקציה ותתרשמו בעצמכם.

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

        לא.
        תעתיקו את הקוד שהבאתי, תקראו לפונקציה ותתרשמו בעצמכם.

        Sara RivkaS
        Sara RivkaS
        Sara Rivka
        כתב ב נערך לאחרונה על ידי
        #13

        @dovid כרגע אין לי את התוכנה במחשב.
        מקווה לעשות את זה מחר בעז"ה.
        בכ"א תודה רבה!!

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

          לא.
          תעתיקו את הקוד שהבאתי, תקראו לפונקציה ותתרשמו בעצמכם.

          Sara RivkaS
          Sara RivkaS
          Sara Rivka
          כתב ב נערך לאחרונה על ידי
          #14

          @dovid שמתי היום את הקוד, וזה באמת הדפיס לי. תודה רבה!
          כמה שאלות:

          1. האם יש אפשרות שזה ידפיס את הטבלה עם קווים בין השורות והטורים?
          2. ישנן עמודות בטבלאות שהסתרתי, ובהדפסה רואים אותן(מצורפת תמונה, העמודה CITY). האם יש אפשרות שלא יראו את זה?
          3. האם יש אפשרות לסדרת את הטבלה מימין לשמאל, ולא משמאל לימין כמו שזה מדפיס כיום?
            f5051b7f-a504-49cc-bec0-d2374402696a-image.png
          תגובה 1 תגובה אחרונה
          0
          • dovidD
            dovidD
            dovid
            ניהול
            כתב ב נערך לאחרונה על ידי dovid
            #15

            הנה תיקונים קוד לשלושת הדברים,

            1. זה הוספת סגנון CSS לטבלה, עשיתי את זה להלן בשורות 6-11
            2. הוספתי תנאי col.Visible בשורה 16
            3. הוספתי גוף html עם תכונת rtl (שורה 5)
                private void PrintDgv(DataGridView dgv)
                {
                    var strB = new StringBuilder();
            
                    strB.Append(@"<html dir='rtl'><head><style>
                    table {
                        border-collapse: collapse;
                    }
                    td {
                        border: 1px solid gray;
                    }
            
            </style></head><body><table><thead><tr>");
            
                    foreach (DataGridViewColumn col in dgv.Columns)
                        if (col.Visible)
                        {
                            strB.Append("<th>");
                            strB.Append(col.HeaderText);
                            strB.Append("</th>");
                        }
            
                    strB.Append("</tr></thead>");
            
                    bool odd = true;
                    foreach (DataGridViewRow row in dgv.Rows)
                    {
                        strB.Append("<tr>");
                        foreach (DataGridViewCell cell in row.Cells)
                        {
                            strB.Append("<td>");
                            strB.Append(cell.Value);
                            strB.Append("</td>");
                        }
                        strB.Append("</tr>");
                    }
            
            
                    strB.Append("</table></body></html>");
            
                    var html = strB.ToString();
                    File.WriteAllText(@"d:\temp.html",html);
            
                    var webBrowser1 = new WebBrowser();
                    webBrowser1.Visible = false;
                    webBrowser1.Parent = this;
                    webBrowser1.DocumentText = strB.ToString();
            
                    webBrowser1.DocumentCompleted += (s, e) => webBrowser1.ShowPrintPreviewDialog();
                }
            

            יש לציין שמציג הhtml של winforms הוא ישן נושן, תואם IE6 אולי עם אפשרות שדורג ל9 שגם הוא כבר ממש לא דפדפן מודרני, וההשלכה של זה היא שהעיצוב מוגבל וקצת מסובך בתאימות. יש שני דרכים אחרות: להשתמש בwebView2 או להפעיל מאחורי הקלעים את כרום אבל זה מחייב שבמחשב המשתמש יש כרום.

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

              הנה תיקונים קוד לשלושת הדברים,

              1. זה הוספת סגנון CSS לטבלה, עשיתי את זה להלן בשורות 6-11
              2. הוספתי תנאי col.Visible בשורה 16
              3. הוספתי גוף html עם תכונת rtl (שורה 5)
                  private void PrintDgv(DataGridView dgv)
                  {
                      var strB = new StringBuilder();
              
                      strB.Append(@"<html dir='rtl'><head><style>
                      table {
                          border-collapse: collapse;
                      }
                      td {
                          border: 1px solid gray;
                      }
              
              </style></head><body><table><thead><tr>");
              
                      foreach (DataGridViewColumn col in dgv.Columns)
                          if (col.Visible)
                          {
                              strB.Append("<th>");
                              strB.Append(col.HeaderText);
                              strB.Append("</th>");
                          }
              
                      strB.Append("</tr></thead>");
              
                      bool odd = true;
                      foreach (DataGridViewRow row in dgv.Rows)
                      {
                          strB.Append("<tr>");
                          foreach (DataGridViewCell cell in row.Cells)
                          {
                              strB.Append("<td>");
                              strB.Append(cell.Value);
                              strB.Append("</td>");
                          }
                          strB.Append("</tr>");
                      }
              
              
                      strB.Append("</table></body></html>");
              
                      var html = strB.ToString();
                      File.WriteAllText(@"d:\temp.html",html);
              
                      var webBrowser1 = new WebBrowser();
                      webBrowser1.Visible = false;
                      webBrowser1.Parent = this;
                      webBrowser1.DocumentText = strB.ToString();
              
                      webBrowser1.DocumentCompleted += (s, e) => webBrowser1.ShowPrintPreviewDialog();
                  }
              

              יש לציין שמציג הhtml של winforms הוא ישן נושן, תואם IE6 אולי עם אפשרות שדורג ל9 שגם הוא כבר ממש לא דפדפן מודרני, וההשלכה של זה היא שהעיצוב מוגבל וקצת מסובך בתאימות. יש שני דרכים אחרות: להשתמש בwebView2 או להפעיל מאחורי הקלעים את כרום אבל זה מחייב שבמחשב המשתמש יש כרום.

              Sara RivkaS
              Sara RivkaS
              Sara Rivka
              כתב ב נערך לאחרונה על ידי
              #16

              @dovid תודה רבה!
              סליחה על כל ההטרדה אבל יש לי עוד שאלה.
              יש לי ComboBox שמכיל רשימת שמות מטבלה מסוימת.
              בטבלה זו ישנם שמות שרשומים כמה פעמים.
              ברצוני שב ComboBox יראו כל שם פעם אחת.
              האם יש אפשרות לעשות את זה? אם כן איך?
              תודה מראש.

              תגובה 1 תגובה אחרונה
              1
              • dovidD
                dovidD
                dovid
                ניהול
                כתב ב נערך לאחרונה על ידי
                #17

                @Sara-Rivka
                א. את צריכה לפתוח על כך נושא חדש
                ב. את צריכה לבציג את הקוד שממלא את הקומבובוקס

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

                  @Sara-Rivka
                  א. את צריכה לפתוח על כך נושא חדש
                  ב. את צריכה לבציג את הקוד שממלא את הקומבובוקס

                  Sara RivkaS
                  Sara RivkaS
                  Sara Rivka
                  כתב ב נערך לאחרונה על ידי
                  #18

                  @dovid שאלות נוספות בקשר לנושא הקודם:
                  א. שמתי את הקוד שנתת, וזה באמת מציג את הטבלה עם עיצוב של טבלה, והוריד מהכותרת את שמות העמודות המוסתרות. אבל- את העמודה המוסתרת עדיין רואים. (מצורפת תמונה)
                  איך מבטלים את זה?
                  7e5a19bb-b1e2-43c9-9478-c2763e1a82f7-image.png
                  (העמודה המוקפת זו עמודה מוסתרת שאת הכותרת שלה לא רואים בגלל הקוד שהוספתי)

                  ב. איך ממרכזים את הטקסט?

                  תגובה 1 תגובה אחרונה
                  0
                  • dovidD
                    dovidD
                    dovid
                    ניהול
                    כתב ב נערך לאחרונה על ידי
                    #19

                    א. אכן פדיחה שלי, אבל כדאי שתצליחו לראות את הבעיה בקוד (זה ממש פשוט) ולתקן בעצמכם, כי ככה לא תשתעבדו לתשובות פה. מה שקורה שיש שתי לולאות, אחת לכותרות ואחת לכלל השורות, ואת התנאי שמתי רק בלולאה של הכותרות.
                    ב. אם רוצים למרכז בהכל צריך להוסיף הוראת text-align: center; בCSS בסלטור של הtd,
                    אבל אם רוצים עמודות מסויימות אז צריך להוסיך את זה inline בלולאה. אם זה המקרה, אז אני שואל האם הם כבר ממורכזות גם בDataGridView?

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

                      א. אכן פדיחה שלי, אבל כדאי שתצליחו לראות את הבעיה בקוד (זה ממש פשוט) ולתקן בעצמכם, כי ככה לא תשתעבדו לתשובות פה. מה שקורה שיש שתי לולאות, אחת לכותרות ואחת לכלל השורות, ואת התנאי שמתי רק בלולאה של הכותרות.
                      ב. אם רוצים למרכז בהכל צריך להוסיף הוראת text-align: center; בCSS בסלטור של הtd,
                      אבל אם רוצים עמודות מסויימות אז צריך להוסיך את זה inline בלולאה. אם זה המקרה, אז אני שואל האם הם כבר ממורכזות גם בDataGridView?

                      Sara RivkaS
                      Sara RivkaS
                      Sara Rivka
                      כתב ב נערך לאחרונה על ידי Sara Rivka
                      #20

                      @dovid כתב בעזרה בטפסי ויזואל סטודיו C#:

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

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

                      אגב שמתי לב שבשורה הזאת:

                      @dovid כתב בעזרה בטפסי ויזואל סטודיו C#:

                          File.WriteAllText(@"d:\temp.html",html);
                      

                      הFILE מסומן לי בתלתל אדום, אז העברתי את זה להערה, מה מסמלת המילה הזאת?

                      תגובה 1 תגובה אחרונה
                      0
                      • dovidD
                        dovidD
                        dovid
                        ניהול
                        כתב ב נערך לאחרונה על ידי
                        #21

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

                        private void PrintDgv(DataGridView dgv)
                        {
                            var strB = new StringBuilder();
                        
                            strB.Append(@"<html dir='rtl'><head><style>
                        table {
                            border-collapse: collapse;
                        }
                        td {
                            border: 1px solid gray;
                            text-align: center;
                        }
                        
                        </style></head><body><table><thead><tr>");
                        
                            foreach (DataGridViewColumn col in dgv.Columns)
                                if (col.Visible)
                                {
                                    strB.Append("<th>");
                                    strB.Append(col.HeaderText);
                                    strB.Append("</th>");
                                }
                        
                            strB.Append("</tr></thead>");
                        
                            bool odd = true;
                            foreach (DataGridViewRow row in dgv.Rows)
                            {
                                strB.Append("<tr>");
                                foreach (DataGridViewCell cell in row.Cells)
                                    if (cell.Visible)
                                    {
                                        strB.Append("<td>");
                                        strB.Append(cell.Value);
                                        strB.Append("</td>");
                                    }
                                strB.Append("</tr>");
                            }
                        
                        
                            strB.Append("</table></body></html>");
                        
                            var webBrowser1 = new WebBrowser();
                            webBrowser1.Visible = false;
                            webBrowser1.Parent = this;
                            webBrowser1.DocumentText = strB.ToString();
                        
                            webBrowser1.DocumentCompleted += (s, e) => webBrowser1.ShowPrintPreviewDialog();
                        }
                        
                        • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                        • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                        תגובה 1 תגובה אחרונה
                        1

                        שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

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

                        בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

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


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

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

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