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

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

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

הוספת מרחב שמות ע"י using

מתוזמן נעוץ נעול הועבר ארכיון code613m
12 פוסטים 3 כותבים 778 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • A מנותק
    A מנותק
    avr416
    כתב ב נערך לאחרונה על ידי
    #1

    ב"ה
    שלום לכולם!
    אז בהמשך לתוכנה שאני מנסה לכתוב.. (כן, כן ההיא על המתפללים :lol: )
    כתבתי כמה מחלקות, ואח"כ צירפתי פרוייקט של WPF וכתבתי בו 2 חלונות (לבנתיים..)
    הבעיה שלי כרגע היא שהפרוייקט מוגדר תחת namespace אחר (למרות שחשבתי על זה ולכן מראש יצרתי אותו ע"י file>add>new project
    אבל זה לא עזר (מלבד זה ששני הפרוייקטים מופיעים לי בחלונית הניווט בצד..)
    אח"כ הוספתי את המרחב שמות הראשון של המחלקות ע"י project>add refernce ומתוך הsolution > project בחרתי בו.
    עכשיו אני מנסה להפנות אליו ע"י using אבל הוא ממאן להוסיף אותו וכותב לי הודעת שגיאה..
    ניסיתי לכתוב בכמה וריאציות אבל שום דבר לא עזר..
    אשמח לעצתכם המחכימה!!

    כמו כן, אנצל את הבמה לשאלה נוספת למבינים בWPF (דוד ל.ט. אני מחכה לתשובה...):
    יצרתי את החלון הראשי של התוכנית עם כמה תפריטים כך:
    [
    גבאי ראשי.png
    עכשיו אני בוחר בהוספת מתפללים ונפתח לי החלון הבא:

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

    כמו כן, ראיתי שבwin form יש לו אפשרות ליצור אוטומטית תפריט סטנדרטי של תוכניות וינדוס, האם גם בWPF יש דבר כזה? (לא מצאתי..)

    תודה רבה!! (דוד ל.ט. אני אומר לך תודה מראש!! 🙂 )
    שבת שלום וחג שמח!! ושנזכה כולנו יחד לקבל את התורה בשמחה!!

    נ.ב. דוד ל.ט., שמרתי את המדריכים שלך, ועוד כמה תשובות שענית בפורום כקובץ PDF ואני אדפיס אותם מחר (בלנ"ד) כדי שאוכל לשבת וללמוד אותם בכובד ראש בהמשך!! כה לחי!!

    פורסם במקור בפורום CODE613 ב22/05/2015 01:18 (+03:00)

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

      @avr416

      הבעיה שלי כרגע היא שהפרוייקט מוגדר תחת namespace אחר (למרות שחשבתי על זה ולכן מראש יצרתי אותו ע"י file>add>new project
      אבל זה לא עזר (מלבד זה ששני הפרוייקטים מופיעים לי בחלונית הניווט בצד..)
      אח"כ הוספתי את המרחב שמות הראשון של המחלקות ע"י project>add refernce ומתוך הsolution > project בחרתי בו.
      עכשיו אני מנסה להפנות אליו ע"י using אבל הוא ממאן להוסיף אותו וכותב לי הודעת שגיאה..

      המושג namespace הוא מאוד מאוד קוסמטי. במקרה שלך המילה הנכונה היא לא namespace (שיכולים להיות רבים בפרוייקט אחד והמושג "ייבוא" לגביהם עשוי בד"כ סה"כ לחסוך את הכתיבה המלאה), אלא אסמבלי ("יחידה". זה שם שנתנו מפתחי הדוט נט ליחידת קוד דוט נטית - DLL או EXE וכו'). כל פרוייקט מקומפל לאסמבלי משלו, וכדי לפנות מאסמבלי אחד למחלקה שנמצאת באסמבלי אחר יש לבצע Reference.
      אם אני מבין נכון: יש לך solution עם פרוייקט מתפללים ופרוייקט חלונאי של WPF. עשית refernce מהWPF למתפללים. בנתיים הכל מעולה, ולכתחילה. רק שאתה נתקל בשגיאה. אנא פרט השגיאה.

      @avr416

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

      בWPF יש שתי אופציות לתקשור עם הUI. או לתת שמות לפקדים ואז יש לך גישה אליהם כמו בWINFORMS. כלומר אם יש לך תיבת טקסט ואתה מוסיף בה את האטריביוט Name (ברירת מחדל בגירסאות ישנות או חדשות של VS למעט 2013) אז אתה יכול לפנות למופע של החלון נקודה שם התיבה שבחרת. זה אופציה א', היא פחות "טובה" (כי יש תלות בין הקוד לתצוגה, כלומר אם תחליף תצוגה תצטרך לשנות חלקים בלוגיקה) אבל היא יותר פשוטה והייתי ממליץ לך עליה במקרים פשוטים או בתור התחלה.
      האופציה השניה והמומלצת בד"כ זה עבודה עם Binding. בדרך זו נותנים באיזה שהוא אופן לDataContext של אלמנט ב"עץ" של התצוגה את האובייקט שלך, נניח מתפלל חדש. כעת כל מאפיין של אלמנט כמו Text של TextBox ניתן ל"איגוד" למאפיין של המחלקה מתפלל ע"י ביטוי Binding. זה נראה ככה

      Text="{Binding LastName}"
      

      (זה בהנחה שהDataContect של הtextBox או אחד מאבותיו מוגדר, ולמחלקה שלה יש מאפיין בשם LastName).

      @avr416

      כמו כן, ראיתי שבwin form יש לו אפשרות ליצור אוטומטית תפריט סטנדרטי של תוכניות וינדוס, האם גם בWPF יש דבר כזה? (לא מצאתי..)

      לא יודע בדיוק למה אתה מתכוון, כנראה שאין את זה בWPF.

      @avr416

      נ.ב. דוד ל.ט., שמרתי את המדריכים שלך, ועוד כמה תשובות שענית בפורום כקובץ PDF ואני אדפיס אותם מחר (בלנ"ד) כדי שאוכל לשבת וללמוד אותם בכובד ראש בהמשך!! כה לחי!!

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

      פורסם במקור בפורום CODE613 ב25/05/2015 12:20 (+03:00)

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

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

      תגובה 1 תגובה אחרונה
      2
      • A מנותק
        A מנותק
        avr416
        כתב ב נערך לאחרונה על ידי
        #3

        תודה רבה רבה על התשובה!!

        אם אני מבין נכון: יש לך solution עם פרוייקט מתפללים ופרוייקט חלונאי של WPF. עשית refernce מהWPF למתפללים. בנתיים הכל מעולה, ולכתחילה. רק שאתה נתקל בשגיאה. אנא פרט השגיאה.

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

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

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

        avr416 כתב:
        כמו כן, ראיתי שבwin form יש לו אפשרות ליצור אוטומטית תפריט סטנדרטי של תוכניות וינדוס, האם גם בWPF יש דבר כזה? (לא מצאתי..)

        לא יודע בדיוק למה אתה מתכוון, כנראה שאין את זה בWPF.

        אני מתכוון שבwin form אתה יכול לבחור מהtollboxs אובייקט מסוג: MenuStrip
        ואח"כ ללחוץ עליו עם הכפתור הימני של העכבר ולבחור insert standart items:

        insert.png
        וזו התוצאה שמתקבלת:

        standart items.png
        לא מצאתי דבר כזה בWPF..

        ושוב, שכוייח על התשובה המפורטת והמושקעת!!

        פורסם במקור בפורום CODE613 ב25/05/2015 21:13 (+03:00)

        תגובה 1 תגובה אחרונה
        0
        • A מנותק
          A מנותק
          avr416
          כתב ב נערך לאחרונה על ידי
          #4

          בהמשך לתוכנה הנ"ל:
          כתבתי את הקוד הבא לכפתור הוסף מתפלל:

          private void הוסףמתפלל_Click(object sender, RoutedEventArgs e)
                  {
                    
                    var worships = new List<WorSh>();
          
                    worships[1] = new WorSh();
                         worships[1].FirstName = firstName.Text;
                         worships[1].LastName = lastName.Text;
                         worships[1].Adress = adress.Text;        
                      
                      Close();
          

          כשאני לוחץ על הכפתור התוכנה קורסת..
          בdeubg הוא זרק לי את החריגה: System.ArgumentOutOfRangeException
          על השורה בה אני מציב עצם מסוג מתפלל בליסט של מתפללים:

          worships[1] = new WorSh();
          

          מדוע? האם list אינו יכול להכיל עצמים?
          אם כן, כיצד אני יכול לכתוב קוד שכל פעם שלוחצים על הכפתור הוא יצור לי עצם חדש מהמחלקה של המתפללים ויזין לתוכו את הערכים? כי אני צריך שכל פעם הוא יצור עצם בשם אחר, ולא יקרא לכולם באותו שם.. (גם הקוד שלי כרגע לא מועיל.. חשבתי להשתמש בליסט, ולהציב ל worships[worships.count] את הערכים, כך שכל פעם יווצר איבר חדש ברשימה.. אבל התוכנה קורסת לי עוד קודם לכן...)
          תודה רבה!

          פורסם במקור בפורום CODE613 ב26/05/2015 10:14 (+03:00)

          תגובה 1 תגובה אחרונה
          0
          • S מנותק
            S מנותק
            softs
            כתב ב נערך לאחרונה על ידי
            #5

            @avr416

            פשוט הויזואל סטודיו (2013) לא מזהה את המחלקה שלי.

            האם היא public?
            אגב גם כשיש פס אדום הוא אומר מה השגיאה בחלון Errors למטה או בריחוף עכבר
            @avr416

            בdeubg הוא זרק לי את החריגה: System.ArgumentOutOfRangeException

            בכדי להוסיף לרשימה איברים צריך להשתמש במתודה Add ואז אפשר גם לפנות אליהם לפי אינדקס
            פרט לכך האינדקס מתחיל מאפס (zero based)

            var worships = new List<WorSh>();
             
                      worships.Add(new WorSh());
                      worships[0].FirstName = firstName.Text;
                      worships[0].LastName = lastName.Text;
                      worships[0].Adress = adress.Text;
            

            פורסם במקור בפורום CODE613 ב26/05/2015 11:20 (+03:00)

            תגובה 1 תגובה אחרונה
            2
            • A מנותק
              A מנותק
              avr416
              כתב ב נערך לאחרונה על ידי
              #6

              תודה רבה על התגובה!

              האם היא public?
              אגב גם כשיש פס אדום הוא אומר מה השגיאה בחלון Errors למטה או בריחוף עכבר

              כן, היא מוגדרת כpublic.
              ההודעה היא:

              שגיאה.png

              בכדי להוסיף לרשימה איברים צריך להשתמש במתודה Add ואז אפשר גם לפנות אליהם לפי אינדקס

              תיקנתי את הקוד.. אבל כשאני מנסה להשתמש באינדקס הוא שוב זורק לי את החריגה הנ"ל
              System.ArgumentOutOfRangeException

              הקוד הוא:

              var worships = new List<WorSh>();
              
                        worships.Add(new WorSh());
              
                        if (worships.Count > 0)
                        {
                            worships[worships.Count].FirstName = firstName.Text;
                            worships[worships.Count].LastName = lastName.Text;
                            worships[worships.Count].Adress = adress.Text;
                        }
                          else
                        {
                            worships[0].FirstName = firstName.Text;
                            worships[0].LastName = lastName.Text;
                            worships[0].Adress = adress.Text;
                        }
              

              הסבר על מטרת הקוד:
              אני רוצה שכל פעם שישתמשו בחלון זה יצור משתמש חדש, ויזין אליו את הנתונים. ולא שהוא יצור משתמש חדש אך יזין את הנתונים לworship[0] ..
              לכן, בהנחה שא"א להריץ את הcount כשאין איברים בLIST.. אני בודק ע"י הcount מה מספר האיברים ואם אין הוא מציב את הנתונים באיבר הראשון, ואם יש הוא מציב באיבר הריק הראשון [worships.count] בהנחה שאם יש 6 איברים לדוגמא, אז האחרון הוא מספר 5 (כי הראשון 0)..
              למה זה לא עובד?? מה הבעיה??
              אני כבר מתחיל להתייאש.. כל פעם משהו אחר לא עובד 🙂
              ותודה לכולם על הזמן שאתם משקיעים בי, ועל כך שאתם סובלים את השאלות שלי..

              פורסם במקור בפורום CODE613 ב26/05/2015 15:35 (+03:00)

              תגובה 1 תגובה אחרונה
              0
              • S מנותק
                S מנותק
                softs
                כתב ב נערך לאחרונה על ידי
                #7

                @avr416

                כן, היא מוגדרת כpublic.

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

                @avr416

                בהנחה שא"א להריץ את הcount כשאין איברים בLIST..

                הנחה שגויה הוא פשוט יחזיר 0

                @avr416

                למה זה לא עובד?? מה הבעיה??

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

                worships.Add(new WorSh());
                       
                worships[worships.Count-1].FirstName = firstName.Text;
                worships[worships.Count-1].LastName = lastName.Text;
                worships[worships.Count-1].Adress = adress.Text;
                

                או (יותר טוב)

                WorSh worsh = new WorSh();
                
                worsh.FirstName = firstName.Text;
                worsh.LastName = lastName.Text;
                worsh.Adress = adress.Text;
                worships.Add(worsh);
                

                @avr416

                אני כבר מתחיל להתייאש.. כל פעם משהו אחר לא עובד 🙂

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

                פורסם במקור בפורום CODE613 ב26/05/2015 16:43 (+03:00)

                תגובה 1 תגובה אחרונה
                2
                • A מנותק
                  A מנותק
                  avr416
                  כתב ב נערך לאחרונה על ידי
                  #8

                  תודה רבה! עשיתי כעצתך ואכן זה עובד..
                  הגדרתי את הLIST של המתפללים תחת הכותרת של הwindow ולא תחת האירוע של הclick
                  כיון שאינני רוצה שכל לחיצה על הכפתור תיצור רשימת מתפללים חדשה, אלא סה"כ תוסיף עצם חדש לרשימה קיימת.
                  נהגתי נכון?

                  הפתרון היחיד הוא להעלות את ה solution לכאן ואז נוכל לבדוק.

                  מה הכוונה להעלות אותו לכאן? את הקבצים שלו? את צילום המסך שלו?

                  שאלה נוספת: מה ההבדל בין window לבין page בWPF? כלומר, מדוע להוסיף חלון חדש כדי להזין לתוכו מתפללים, ולא להוסיף עמוד חדש (ניסיתי להשתמש בpage ולא הצלחתי למצוא את הפקודה show שלו..)

                  פורסם במקור בפורום CODE613 ב26/05/2015 22:21 (+03:00)

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

                    @avr416

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

                    בהחלט.

                    @avr416

                    מה הכוונה להעלות אותו לכאן? את הקבצים שלו? את צילום המסך שלו?

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

                    @avr416

                    שאלה נוספת: מה ההבדל בין window לבין page בWPF? כלומר, מדוע להוסיף חלון חדש כדי להזין לתוכו מתפללים, ולא להוסיף עמוד חדש (ניסיתי להשתמש בpage ולא הצלחתי למצוא את הפקודה show שלו..)

                    page זה עולם אחר. אין לזה show אלא משתמשים בדפדפן כמו frame להצגתו. גם לא מאתחלים אותו עם new אלא פשוט הframe עושה זאת. זה די מסובך לפנות לדף "מבחוץ" ובעצם הגישה של אפליקציה מבוססת דפים היא שהדפים הם עצמאיים לגמרי רק שהם חולקים בדרך כלל מקור נתונים סטטי/משותף.
                    קצת סיפור, בעיקר בגלל שאני לא מכיר את זה טוב 🙂 :(.

                    פורסם במקור בפורום CODE613 ב27/05/2015 11:01 (+03:00)

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

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

                    תגובה 1 תגובה אחרונה
                    2
                    • A מנותק
                      A מנותק
                      avr416
                      כתב ב נערך לאחרונה על ידי
                      #10

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

                      אכן כן, זו הייתה הבעיה!! הוספתי public לפני הגדרת המחלקה והכל בא על מקומו בשלום..
                      כבר כמעט התייאשתי והעתקתי את כל המחלקות הללו למחלקות חדשות בתוך פרוייקט הWPF..
                      שכויח עצום!! :smile: :smile: :smile:
                      כבר הייתי בטוח שהתוכנה שלי מקולקלת.. (או שאני מקולקל :lol: )

                      page זה עולם אחר. אין לזה show אלא משתמשים בדפדפן כמו frame להצגתו. גם לא מאתחלים אותו עם new אלא פשוט הframe עושה זאת. זה די מסובך לפנות לדף "מבחוץ" ובעצם הגישה של אפליקציה מבוססת דפים היא שהדפים הם עצמאיים לגמרי רק שהם חולקים בדרך כלל מקור נתונים סטטי/משותף.

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

                      פורסם במקור בפורום CODE613 ב27/05/2015 19:37 (+03:00)

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

                        המשך ככה, אתה עושה פה סוף סוף מצב רוח...

                        @avr416

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

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

                        פורסם במקור בפורום CODE613 ב27/05/2015 21:05 (+03:00)

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

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

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

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

                          כלומר לא צריך שהתוכנה תרוץ על דפדפן כדי להשתמש בזה?
                          ככה רוב האפליקציות היום עובדות? לא?
                          אז כדאי לי ללמוד איך להשתמש בזה.. :lol:

                          פורסם במקור בפורום CODE613 ב27/05/2015 22:46 (+03:00)

                          תגובה 1 תגובה אחרונה
                          0

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

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

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