none
איך להכניס מד התקדמות לקוד progress Bar? RRS feed

  • שאלה

  • יש לי את הקוד הבא: ואתם בטח רואים שמד ההתקדמות שלי לא אמור להיות כמו שהוא בקוד.

    אין לי מוסג איך להכניס מד התקדמות progress Bar כדי לבצע מד שהתקדם מ-0 ועד 100 אחוז ויראה למשתמש איפה הוא נמצא בזמן ביצוע הפעולה.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Microsoft.Office.Interop.Word; // לצורך ההמרה
    using System.IO; // עבודה עם קבצים
    
    namespace MultiDrag
    {
        public partial class ConvertAllToPDF : Form
        {
    
            public string oldFileName;
    
    
            public ConvertAllToPDF()
            {
                InitializeComponent();
            }
    
            private void ConvertAllToPDF_Load(object sender, EventArgs e)
            {
                // סגירת אפשרויות הסגור, הגדל, מזער של הפורם
                this.MaximizeBox = false;
                this.MinimizeBox = false;
                this.ControlBox = false;
                
                Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
                progressBarPDFConverter.Value = 1;
                
                object oMissing = System.Reflection.Missing.Value;
                progressBarPDFConverter.Value = 2;
                 
                FileInfo wordFile = new FileInfo(oldFileName);
                progressBarPDFConverter.Value = 3;
                word.Visible = false;
                word.ScreenUpdating = false;
                progressBarPDFConverter.Value = 4;
                
                Object filename = (Object)wordFile.FullName;
                progressBarPDFConverter.Value = 5;
                
                Document doc = word.Documents.Open(ref filename, ref oMissing,
                    ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                    ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                    ref oMissing, ref oMissing, ref oMissing, ref oMissing);
                doc.Activate();
                progressBarPDFConverter.Value = 6;
                object outputFileName = wordFile.FullName.Replace(Path.GetExtension(oldFileName), ".pdf");
                object fileFormat = WdSaveFormat.wdFormatPDF;
                progressBarPDFConverter.Value = 7;
                 
                doc.SaveAs(ref outputFileName,
                    ref fileFormat, ref oMissing, ref oMissing,
                    ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                    ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                    ref oMissing, ref oMissing, ref oMissing, ref oMissing);
                progressBarPDFConverter.Value = 8;
                               
                object saveChanges = WdSaveOptions.wdDoNotSaveChanges;
                ((_Document)doc).Close(ref saveChanges, ref oMissing, ref oMissing);
                doc = null;
                progressBarPDFConverter.Value = 9;
                
                ((_Application)word).Quit(ref oMissing, ref oMissing, ref oMissing);
                word = null;
                progressBarPDFConverter.Value = 10;
                this.Close(); // סגירת התוכנית לאחר הסיום
            }
        }
    }
    

    כמו שאתם רואים הגדרתי את ה- progressBar לערך של 10 ואז כל כמה שורות קוד אני מוסיף 1. לא נראה לי הגיוני בכלל אבל כך אני יודע לעשות את זה.

    מישהו יכול לעזור לי בזה?

    יום רביעי 25 יולי 2012 14:36

תשובות

כל התגובות

  • מה שעשית זה מקובל וסביר.

    במידה והיית מעביר מספר קבצים ולא ממיר קובץ אחד  כל פעם אז הייתי מגדיל את ה progress ל 100 ואז מבצע את החישוב ב % עבור ההמרה לפי ההתקדמות.

    יש כמה נקודות מיותרות כמו 2-5 שלא מתבצעת שום פעולה פרט להזנת נתונים.

    עד כמה שזכור לי ל WORD אין EVENT שאפשר להתחבר אליו בכדי לשעת מה מצב השמירה.


    • נערך על-ידי tetitu יום ראשון 29 יולי 2012 05:15
    יום רביעי 25 יולי 2012 15:01
  • אם הייתי מעביר קבצים או מעתיק או עושה כל דבר שאפשר לעקוב אחר הפעילות זה לא בעיה אבל הייתי בטוח שגם לדברים כאילו יש פיתרון.

    יום רביעי 25 יולי 2012 15:28
  • בעקרון אתה רוצה לדעת איך מתקדמת השמירה.

    אבל בשביל זה אתה צריך שיתוף פעולה של האובייקט וורד שיוציא EVENT מתאים.

    וכלי שניתן לראות:

    http://support.microsoft.com/kb/302816

    אני לא מצאתי EVENT כזה.

    • הוצע כתשובה על-ידי Ido Flatow. _Moderator יום חמישי 26 יולי 2012 15:00
    • סומן כתשובה על-ידי Eran Sharvit יום שלישי 31 יולי 2012 14:00
    יום חמישי 26 יולי 2012 06:11
  • מסתבר שיש כלים יעילים ונוחים מMSWORD לביצוע המרה של מסמכי וורד לPDF.

    ובהם ייתכן שיהיה לך גם שליטה על ההתקדמות.

    יום חמישי 26 יולי 2012 10:00
  • גם אם הוא ישתמש ב VERYDOC זה משתמש ב OPENOFFICE

    וכפי שניתן לראות גם שם אין EVENT ל SAVE

    http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/OfficeDev/Document_Events

    אם ממש רוצים אז יכול להיות שיש listener ל print

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

    יום חמישי 26 יולי 2012 11:02