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

העברת מידע בין forms ב#c


eido300

Recommended Posts

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

אז יצרתי מחלקה עם 2 stringים לשם הספר והסופר, double למחיר וint למלאי, עשיתי list של המחלקה הזאת ששם ישמרו הספרים בכל תא ספר אחד עם כל הפרטים שלו.

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

כאן מתחילה הבעיה,איך עושים את זה? חשבתי לפתוח form חדש שיכיל listbox, והתוכן של כל תא יכתב בשורה חדשה, אבל מכיוון שכל המשתנים מוגדרים כפרטיים אני לא יכול להעביר את המידע שלהם לא למחלקה אחרת ולא לform אחר, אז איך אני מעביר את המידע הזה?

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

זה פחות או יותר הקוד שכתבתי שקשור אלינו: http://pastebin.com/bdtiYbVk

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

  • תגובות 40
  • נוצר
  • תגובה אחרונה

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

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

Form הוא מחלקה לכל דבר. אתה יכול להעביר ממנו ואליו משתנים ואובייקטים איך שאתה רוצה. אתה יכול להגדיר לו איזה מתודות, שדות ותכונות שאתה רוצה. אתה יכול לחשוף את ה-list כלפי חוץ באמצעות property, או שאתה יכול לשים ב-form מתודה שמוסיפה רשומה ל-List הזה.

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

Form הוא מחלקה לכל דבר. אתה יכול להעביר ממנו ואליו משתנים ואובייקטים איך שאתה רוצה. אתה יכול להגדיר לו איזה מתודות, שדות ותכונות שאתה רוצה. אתה יכול לחשוף את ה-list כלפי חוץ באמצעות property, או שאתה יכול לשים ב-form מתודה שמוסיפה רשומה ל-List הזה.

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

ואיך מגדירים את מאפיין הset בproperty, הרי אני אמור לאתחל בו כמה משתנים שונים (שם הספר, שם הסופר, מחיר וכמות)? הקוד בלחצן שאמור לשמור את הנתונים שמכניסים הוא:


private void saveDetls_Click(object sender, EventArgs e)
{
double price1 = double.Parse(price.Text);
int qty = int.Parse(qauntity.Text);
lOcI.Add(new cardIndex(nameOfBook.Text, nameOfWriter.Text, price1, qty));
nameOfBook.Text = nameOfWriter.Text = price.Text = qauntity.Text = "";
showDetls.Enabled = true;
}

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

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

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

הטופס הזה שיצרת, מה הוא מכיל? מה הוא מייצג?

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

4 תיבות טקסט ו2 לחצנים.

תיבה לשם הספר תיבה לשם הסופר תיבה למחיר ותיבה לכמות, לחצן ששומר את הפרטים (saveDtls) שהוכנסו ולחצן שאמור להציג (showDtls) את כל הספרים והפרטים בתור רשימה.

http://pastebin.com/Y3YWBLZE זה הקוד. ההתחלה זה המחלקה שיצרתי ואחר כך זה הform הקטע הבעייתי מסומן בכוכביות, מתחתיו יש את הלחצן שאמור לשמור את הפרטים שהוכנסו, במחלקה שיצרתי יש 3 בנאים, כרגע רק הראשון בשימוש הנותרים זה למקרה של שינויים במחיר ובכמות.

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

הטופס הזה אמור להוסיף איבר לרשימה, אני מנסה שבלחיצה על הכפתור השני (שבטופס) יפתח טופס חדש ובו תוצג הרשימה, כיון שהlist מוגדר כפרטי אני לא יכול להעביר אותו לטופס השני, הצעת שאני יהפוך אותו לproperty, איך עושים את זה? מה כותבים בset

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

יש לך שליטה על הכל. יש לך הכוח. אני חוזר ואומר: Form הוא מחלקה לכל דבר. אתה יכול להגדיר לו בנאי, אתה יכול להגדיר לו מתודות. אתה יכול להגדיר לו בנאי שמקבל רשימה, או מתודה שמחזירה רשימה, או מתודה שמחזירה את הרשימה שהוא יצר, וכן הלאה. זה שהגדרת את הרשימה כ-private לא אומר שאתה לא יכול לחשוף אותה כלפי חוץ ע"י property get, או להעביר אותה לטופס אחר ע"י בנאי.

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

אוקיי, מצטער אבל אני לא מצליח...

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

אני אצטרך שתסביר לי מה לעשות

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

למה? במחלקה כולם public עם set פרטי.

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

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

יש לי את המחלקה שמוגדרת כך:

[LEFT]public class cardIndex
{
public cardIndex(string book, string writer, string price, string quantity)
{
this.book = book;
this.writer=writer;
this.price = double.Parse(price);
this.quantity = int.Parse(quantity);


}
public cardIndex(string price)
{
this.price = double.Parse(price);
}
public cardIndex(int quantity) {
this.quantity = quantity;
}
public string book
{
private set { ;}
get { return book; }
}
public string writer
{
private set { ;}
get { return writer; }
}
public double price
{
private set { ;}
get { return price; }
}
public int quantity
{
private set { ;}
get { return quantity; }
}
}[/LEFT]


למה שאני יוצר בform משתנה כזה:

[LEFT]private List<cardIndex> lOcI = new List<cardIndex>();[/LEFT]


הוא לא נותן לי (באותו form) גישה למשתנים של המחלקה? זאת אומרת שאין לי אפשרות אפילו לקרוא מהם

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

ארכיון

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


×
  • צור חדש...