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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. שאלה: איך עושים בתוסף vsto לוורד שtaskpane יישאר תמיד בחלונית האקטיבית

שאלה: איך עושים בתוסף vsto לוורד שtaskpane יישאר תמיד בחלונית האקטיבית

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

    מעניין אותי לשחק, תוכל לומר לי בקצרה איך ליצור פרוייקט שלום עולם?

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

    @dovid
    צור תוסף vsto בvisualstudio
    צור פקד usercontrol עם איזשהו כפתור או label

    הזן קוד זה ליצירת החלונית צד

    private UserControl1 taskPaneUserControl;
    private CustomTaskPane taskPane;
    
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        taskPaneUserControl = new UserControl1();
        taskPane = this.CustomTaskPanes.Add(taskPaneUserControl, "תורת אמת");
        taskPane.Visible = true;
        taskPane.Width = 450; // Adjust the width as needed
    }
    

    גמ"ח מידע מחשבים ואופיס

    pcinfogmachP תגובה 1 תגובה אחרונה
    0
    • pcinfogmachP pcinfogmach

      @dovid
      צור תוסף vsto בvisualstudio
      צור פקד usercontrol עם איזשהו כפתור או label

      הזן קוד זה ליצירת החלונית צד

      private UserControl1 taskPaneUserControl;
      private CustomTaskPane taskPane;
      
      private void ThisAddIn_Startup(object sender, System.EventArgs e)
      {
          taskPaneUserControl = new UserControl1();
          taskPane = this.CustomTaskPanes.Add(taskPaneUserControl, "תורת אמת");
          taskPane.Visible = true;
          taskPane.Width = 450; // Adjust the width as needed
      }
      
      pcinfogmachP מנותק
      pcinfogmachP מנותק
      pcinfogmach
      כתב ב נערך לאחרונה על ידי pcinfogmach
      #8

      @dovid

      כדי לשחק עם אירוע פתיחת החלונות ייתכן שתצטרך להתשמש עם ספריית globals

      Globals.ThisAddIn.Application.DocumentOpen += Application_DocumentOpen;
                  Globals.ThisAddIn.Application.WindowActivate += Application_WindowActivate;
      

      גמ"ח מידע מחשבים ואופיס

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

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

        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            Application.DocumentChange += () => loadPanel();
            loadPanel();
        }
        
        void loadPanel()
        {
            if(taskPane != null)
                taskPane.Visible = false;
            taskPane = this.CustomTaskPanes.Add(new UserControl1(), "שלום עולם");
            taskPane.Visible = true;
            taskPane.Width = 200; 
        }
        
        • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
        • בכל נושא אפשר ליצור קשר dovid@tchumim.com
        pcinfogmachP 2 תגובות תגובה אחרונה
        1
        • dovidD dovid

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

          private void ThisAddIn_Startup(object sender, System.EventArgs e)
          {
              Application.DocumentChange += () => loadPanel();
              loadPanel();
          }
          
          void loadPanel()
          {
              if(taskPane != null)
                  taskPane.Visible = false;
              taskPane = this.CustomTaskPanes.Add(new UserControl1(), "שלום עולם");
              taskPane.Visible = true;
              taskPane.Width = 200; 
          }
          
          pcinfogmachP מנותק
          pcinfogmachP מנותק
          pcinfogmach
          כתב ב נערך לאחרונה על ידי pcinfogmach
          #10

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

          לגבי השגיאה שהזכרת לפעמים למחוק את תיקיית obj בתוך הrepo עוזר.
          גם מומלץ להוסיף א תיקיית הrepo למיקומים מהימנים בוורד.

          גמ"ח מידע מחשבים ואופיס

          תגובה 1 תגובה אחרונה
          0
          • pcinfogmachP מנותק
            pcinfogmachP מנותק
            pcinfogmach
            כתב ב נערך לאחרונה על ידי
            #11

            לפי מה שכתוב פה
            https://learn.microsoft.com/en-us/visualstudio/vsto/custom-task-panes?view=vs-2022&tabs=csharp#WordAndInfoPath
            זה נראה שמה שאני רוצה זה אכן בלתי אפשרי

            גמ"ח מידע מחשבים ואופיס

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

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

              private void ThisAddIn_Startup(object sender, System.EventArgs e)
              {
                  Application.DocumentChange += () => loadPanel();
                  loadPanel();
              }
              
              void loadPanel()
              {
                  if(taskPane != null)
                      taskPane.Visible = false;
                  taskPane = this.CustomTaskPanes.Add(new UserControl1(), "שלום עולם");
                  taskPane.Visible = true;
                  taskPane.Width = 200; 
              }
              
              pcinfogmachP מנותק
              pcinfogmachP מנותק
              pcinfogmach
              כתב ב נערך לאחרונה על ידי
              #12

              @dovid
              שמתי לב לבעיה בקוד שעשית
              מה שקורה הוא שבעצם הקוד לא מסיר את המופע הקודם של ה taskpane אלא רק מסתיר אותו וכאשר אני חוזר אל המסמך הקודם שהייתי בו אז הוא יוצר taskpane חדש וחוזר חלילה.

              מה שצריך לעשות זה להוסיף בדיקה עם

              || taskPane.Window != Globals.ThisAddIn.Application.ActiveWindow
              

              ולהוסיף

              else
              {
                  taskPane.Visible = true;
              }
              

              שפושוט יחזיר את המופע המקורי במקרה שהוא כבר קיים במסמך זה ולא ייצור חדש שוב ושוב

              נ.ב. שוב תודה רבה על כל העזרה הנפלאה

              גמ"ח מידע מחשבים ואופיס

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

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

                    private Microsoft.Office.Tools.CustomTaskPane taskPane;
                    private UserControl1 control = new UserControl1();
                    private Word.Document lastDoc;
                    private void ThisAddIn_Startup(object sender, System.EventArgs e)
                    {
                        Application.DocumentChange += () => loadPanel();
                    }
                
                    void loadPanel()
                    {
                        if(Application.Documents.Count == 0 || lastDoc == Application.ActiveDocument)
                            return;
                
                        lastDoc = Application.ActiveDocument;
                        if (taskPane != null)
                        {
                            control.Parent = null;
                            this.CustomTaskPanes.Remove(taskPane);
                        }
                
                        taskPane = this.CustomTaskPanes.Add(control, "שלום עולם");
                        taskPane.Visible = true;
                        taskPane.Width = 200;
                    }
                
                • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                pcinfogmachP תגובה 1 תגובה אחרונה
                1
                • dovidD dovid

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

                      private Microsoft.Office.Tools.CustomTaskPane taskPane;
                      private UserControl1 control = new UserControl1();
                      private Word.Document lastDoc;
                      private void ThisAddIn_Startup(object sender, System.EventArgs e)
                      {
                          Application.DocumentChange += () => loadPanel();
                      }
                  
                      void loadPanel()
                      {
                          if(Application.Documents.Count == 0 || lastDoc == Application.ActiveDocument)
                              return;
                  
                          lastDoc = Application.ActiveDocument;
                          if (taskPane != null)
                          {
                              control.Parent = null;
                              this.CustomTaskPanes.Remove(taskPane);
                          }
                  
                          taskPane = this.CustomTaskPanes.Add(control, "שלום עולם");
                          taskPane.Visible = true;
                          taskPane.Width = 200;
                      }
                  
                  pcinfogmachP מנותק
                  pcinfogmachP מנותק
                  pcinfogmach
                  כתב ב נערך לאחרונה על ידי
                  #14

                  @dovid
                  חשבתי אולי לעשות windows form שיהיה childform בתוך הtaskpane ואז את הform אפשר יהיה להעביר מtaskpane לtaskpane על יד שינוי ה parent שלו

                  מה אתה אומר?

                  גמ"ח מידע מחשבים ואופיס

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

                    @pcinfogmach צודק, עובד!

                        private Microsoft.Office.Tools.CustomTaskPane taskPane;
                        private UserControl1 control = new UserControl1();
                    
                        private UserControlContainer container;
                        private Word.Document lastDoc;
                        private void ThisAddIn_Startup(object sender, System.EventArgs e)
                        {
                            Application.DocumentChange += () => loadPanel();
                        }
                    
                        void loadPanel()
                        {
                            if(Application.Documents.Count == 0 || lastDoc == Application.ActiveDocument)
                                return;
                    
                            lastDoc = Application.ActiveDocument;
                            if (taskPane != null)
                            {
                                container.Controls.Remove(control);
                                this.CustomTaskPanes.Remove(taskPane);
                            }
                    
                            container = new UserControlContainer(control);
                            taskPane = this.CustomTaskPanes.Add(container, "שלום עולם");
                            taskPane.Visible = true;
                            taskPane.Width = 200;
                        }
                    
                        public class UserControlContainer : UserControl
                        {
                            public UserControlContainer(UserControl1 control)
                            {
                                Controls.Add(control);
                                control.Dock = DockStyle.Fill;
                            }
                        }
                    
                    • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                    • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                    pcinfogmachP תגובה 1 תגובה אחרונה
                    2
                    • dovidD dovid

                      @pcinfogmach צודק, עובד!

                          private Microsoft.Office.Tools.CustomTaskPane taskPane;
                          private UserControl1 control = new UserControl1();
                      
                          private UserControlContainer container;
                          private Word.Document lastDoc;
                          private void ThisAddIn_Startup(object sender, System.EventArgs e)
                          {
                              Application.DocumentChange += () => loadPanel();
                          }
                      
                          void loadPanel()
                          {
                              if(Application.Documents.Count == 0 || lastDoc == Application.ActiveDocument)
                                  return;
                      
                              lastDoc = Application.ActiveDocument;
                              if (taskPane != null)
                              {
                                  container.Controls.Remove(control);
                                  this.CustomTaskPanes.Remove(taskPane);
                              }
                      
                              container = new UserControlContainer(control);
                              taskPane = this.CustomTaskPanes.Add(container, "שלום עולם");
                              taskPane.Visible = true;
                              taskPane.Width = 200;
                          }
                      
                          public class UserControlContainer : UserControl
                          {
                              public UserControlContainer(UserControl1 control)
                              {
                                  Controls.Add(control);
                                  control.Dock = DockStyle.Fill;
                              }
                          }
                      
                      pcinfogmachP מנותק
                      pcinfogmachP מנותק
                      pcinfogmach
                      כתב ב נערך לאחרונה על ידי pcinfogmach
                      #16

                      @dovid
                      לקחת את הרעיון שלי ושיפרת אותו לאין ערוך אין מילים בפי להודות לך. תודה!

                      גמ"ח מידע מחשבים ואופיס

                      תגובה 1 תגובה אחרונה
                      2
                      • pcinfogmachP מנותק
                        pcinfogmachP מנותק
                        pcinfogmach
                        כתב ב נערך לאחרונה על ידי
                        #17

                        @dovid
                        פידבק שקיבלתי מחבר

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

                        גמ"ח מידע מחשבים ואופיס

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

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

                          נ.ב. אם תצליח לגרום לחבר שלך להשתתף פה בדיונים אודה לך מאוד!

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

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

                            נ.ב. אם תצליח לגרום לחבר שלך להשתתף פה בדיונים אודה לך מאוד!

                            pcinfogmachP מנותק
                            pcinfogmachP מנותק
                            pcinfogmach
                            כתב ב נערך לאחרונה על ידי
                            #19

                            @dovid כתב בשאלה: איך עושים בתוסף vsto לוורד שtaskpane יישאר תמיד בחלונית האקטיבית:

                            נ.ב. אם תצליח לגרום לחבר שלך להשתתף פה בדיונים אודה לך מאוד!

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

                            גמ"ח מידע מחשבים ואופיס

                            תגובה 1 תגובה אחרונה
                            0
                            • pcinfogmachP מנותק
                              pcinfogmachP מנותק
                              pcinfogmach
                              כתב ב נערך לאחרונה על ידי pcinfogmach
                              #20

                              @dovid
                              ניתקלתי בבעיה בקוד הנוכחי - כאשר המשתמש סוגר את החלונית אז זה לא מעיל לו לסגור אותה לגמרי כי זה קופץ לו בחזרה ברגע שהוא מחליף תצוגה ממסמך למסמך
                              חשבתי לעשות משתנה Bool שיקלוט את זה אבל אולי יש דרך יותר טובה?
                              כמו"כ לא הצלחתי לקלוט את הלחיצה על כפתור הסגירה. (שים לב כפתור הסגירה אינו סוגר רק מסתיר אז לתפוס את ההסתרה אולי זה אופציה השאלה אם זה עלול לגרום לבעיה שלא חשבתי עליה)

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

                              גמ"ח מידע מחשבים ואופיס

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

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

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

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

                                  pcinfogmachP מנותק
                                  pcinfogmachP מנותק
                                  pcinfogmach
                                  כתב ב נערך לאחרונה על ידי pcinfogmach
                                  #22

                                  @dovid כתב בשאלה: איך עושים בתוסף vsto לוורד שtaskpane יישאר תמיד בחלונית האקטיבית:

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

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

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

                                  גמ"ח מידע מחשבים ואופיס

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

                                    לא היית צריך להתנצל, ולא הבנת אותי.
                                    מתי אתה רוצה שייפתח התוסף פעם ראשונה, בעת_________?

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

                                      לא היית צריך להתנצל, ולא הבנת אותי.
                                      מתי אתה רוצה שייפתח התוסף פעם ראשונה, בעת_________?

                                      pcinfogmachP מנותק
                                      pcinfogmachP מנותק
                                      pcinfogmach
                                      כתב ב נערך לאחרונה על ידי pcinfogmach
                                      #24

                                      @dovid כתב בשאלה: איך עושים בתוסף vsto לוורד שtaskpane יישאר תמיד בחלונית האקטיבית:

                                      לא היית צריך להתנצל, ולא הבנת אותי.
                                      מתי אתה רוצה שייפתח התוסף פעם ראשונה, בעת_________?

                                      בעת לחיצה על כפתור בסרגל הכלים (סרגל visual לא סרגל xml)

                                      הערה: אם מתכנתים סרגל visual או שמתשמשים עם לשונית מובנית ואש אפשר להשתמש עם cotrolid של office אם רצונך ליצור לשונית חדשה אז צריך להגדיר כ custom

                                      גמ"ח מידע מחשבים ואופיס

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

                                        וזה ממש טוען את התוסף מאפס (מעורר ThisAddIn_Startup?)
                                        הבנתי, סליחה.

                                        @dovid כתב בשאלה: איך עושים בתוסף vsto לוורד שtaskpane יישאר תמיד בחלונית האקטיבית:

                                        האזנה לסגירה אתה יכול לעשות עם האירוע taskPane.VisibleChanged שמה בתוכו אתה יכול לבדוק את taskPane.Visible.

                                            private bool IsVisibleStatus = true;
                                        
                                            void loadPanel()
                                            {
                                                if(!IsVisibleStatus) return;
                                                if(Application.Documents.Count == 0 || lastDoc == Application.ActiveDocument)
                                                    return;
                                        
                                                lastDoc = Application.ActiveDocument;
                                                if (taskPane != null)
                                                {
                                                    container.Controls.Remove(control);
                                                    this.CustomTaskPanes.Remove(taskPane);
                                                }
                                        
                                                container = new UserControlContainer(control);
                                                taskPane = this.CustomTaskPanes.Add(container, "שלום עולם");
                                                taskPane.Visible = true;
                                                taskPane.Width = 200;
                                                taskPane.VisibleChanged += (s, e) => IsVisibleStatus = taskPane.Visible;
                                            }
                                        
                                        • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                                        • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                                        pcinfogmachP תגובה 1 תגובה אחרונה
                                        0
                                        • dovidD dovid

                                          וזה ממש טוען את התוסף מאפס (מעורר ThisAddIn_Startup?)
                                          הבנתי, סליחה.

                                          @dovid כתב בשאלה: איך עושים בתוסף vsto לוורד שtaskpane יישאר תמיד בחלונית האקטיבית:

                                          האזנה לסגירה אתה יכול לעשות עם האירוע taskPane.VisibleChanged שמה בתוכו אתה יכול לבדוק את taskPane.Visible.

                                              private bool IsVisibleStatus = true;
                                          
                                              void loadPanel()
                                              {
                                                  if(!IsVisibleStatus) return;
                                                  if(Application.Documents.Count == 0 || lastDoc == Application.ActiveDocument)
                                                      return;
                                          
                                                  lastDoc = Application.ActiveDocument;
                                                  if (taskPane != null)
                                                  {
                                                      container.Controls.Remove(control);
                                                      this.CustomTaskPanes.Remove(taskPane);
                                                  }
                                          
                                                  container = new UserControlContainer(control);
                                                  taskPane = this.CustomTaskPanes.Add(container, "שלום עולם");
                                                  taskPane.Visible = true;
                                                  taskPane.Width = 200;
                                                  taskPane.VisibleChanged += (s, e) => IsVisibleStatus = taskPane.Visible;
                                              }
                                          
                                          pcinfogmachP מנותק
                                          pcinfogmachP מנותק
                                          pcinfogmach
                                          כתב ב נערך לאחרונה על ידי pcinfogmach
                                          #26

                                          @dovid כתב בשאלה: איך עושים בתוסף vsto לוורד שtaskpane יישאר תמיד בחלונית האקטיבית:

                                          האזנה לסגירה אתה יכול לעשות עם האירוע taskPane.VisibleChanged שמה בתוכו אתה יכול לבדוק את taskPane.Visible.

                                          מה עם הבעיות הנ"ל?
                                          https://tchumim.com/post/157637

                                          גמ"ח מידע מחשבים ואופיס

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


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

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

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