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

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

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

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

מתוזמן נעוץ נעול הועבר ארכיון code613m
12 פוסטים 3 כותבים 778 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • 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
                        • דף הבית
                        • קטגוריות
                        • פוסטים אחרונים
                        • משתמשים
                        • חיפוש
                        • חוקי הפורום