רשימה נפתחת עם ערים+רחובות c# - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

רשימה נפתחת עם ערים+רחובות c#


eido300

Recommended Posts

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

https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox_events(v=vs.110).aspx

בטח SelectedIndexChanged או SelectedValueChanged.

הקוד נראה תקין, אבל כמה הערות:

א. עולה לך כסף להשתמש במשתנים? שמור את שם העיר ושם הרחוב במשנה זמני במקום לשלוף אותם שוב ושוב מתוך ה-xml.

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

ג. לא ברור לי למה אתה צריך את ה-index, אתה יכול לגשת לאיבר האחרון ברשימה באמצעות הפונקציה Last, או ע"י האינדקס list_of_cities.Count-1.

קישור לתוכן
שתף באתרים אחרים

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

לגבי שאר ההערות - אני אתקן את הנקודות הנ"ל.

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

קישור לתוכן
שתף באתרים אחרים

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

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

//increase index by 1
index++;

קישור לתוכן
שתף באתרים אחרים

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

 foreach (city_details detail in list_of_cities)
{
if (cityCb.Text == detail.city)
{
foreach (string street in detail.street)
{
streetCb.AutoCompleteCustomSource.Add(street);
}
break;
}
}

קישור לתוכן
שתף באתרים אחרים

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

חוץ מזה אתה בטוח שאתה משתמש נכון ב-AutoCmopleteCustomSource? (אני לא מכיר את הפיצ'ר הזה, פשוט תוודא שאתה משתמש בו נכון).

קישור לתוכן
שתף באתרים אחרים

הוא לא נותן לי לראות את החלק הזה של הקוד, עד החלק הזה (מרגע שהוא פתח את הפורם, אחרי ההגדרה של כל הtextBox וכו' ומילוי הcombox של הערים') אני יכול לעקוב אחרי כל שורת קוד, ברגע שהוא גמר למלאת את הcomboBox של הערים הוא מעביר את התצוגה לתוכנה שרצה ועד שאני לא לוחץ על אחד הbuttunים הדיבאגר לא חוזר לתצוגת הקוד.

עריכה: הכנסתי את הקוד לאירוע textChanged והכל הסתדר, לא יודע איך עד עכשיו לא שמתי לב לאירוע הזה.

תודה רבה.

- - - תגובה אוחדה: - - -

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

https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox_events(v=vs.110).aspx

בטח SelectedIndexChanged או SelectedValueChanged.

הקוד נראה תקין, אבל כמה הערות:

א. עולה לך כסף להשתמש במשתנים? שמור את שם העיר ושם הרחוב במשנה זמני במקום לשלוף אותם שוב ושוב מתוך ה-xml.

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

ג. לא ברור לי למה אתה צריך את ה-index, אתה יכול לגשת לאיבר האחרון ברשימה באמצעות הפונקציה Last, או ע"י האינדקס list_of_cities.Count-1.

א ו- ג תוקנו.

א- הוספתי משתנה currentCity שיחזיק את שם העיר כך שיקראו אותה מהקובץ רק פעם אחת, את שם הרחוב ממילא קוראים רק פעם אחת אז לא יצרתי לו משתנה מיוחד.

ג- שיניתי לlist_of_city.Count-1.

את ההערות שיניתי כמו שכתבת.

רק את הקריאה מהקובץ xml אני לא יודע איך לכתוב, אם אני לא יודע איך הקובץ בנוי איך אני אמור לקרוא אותו ולאיפה?

קישור לתוכן
שתף באתרים אחרים

  • 2 שבועות מאוחר יותר...

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

איך אני כותב (היום) קוד שייקרא קובץ xml שאני יוריד בהמשך, הרי אני כיום לא יודע איך הקובץ יהיה בנוי?

קישור לתוכן
שתף באתרים אחרים

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

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

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...