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

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


daniel4300

Recommended Posts

איפה אתה כותב את הקוד הזה?

שים לב שאתה צריך להגדיר את CH פעם אחת, ולבצע ch = new ChooseLine(); פעם אחת בתחילת הריצה, וכל פעם להשתמש ב- ch.choose.Text.

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

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

אני כותב את הקוד הזה בform השני איפה שאני צריך את המידע הזה.

והform השני הזה נפתח רק אחרי chooseline אז אם אני עושה שם new הוא לא שומר את הערכים הקודמים הוא כאילו פותח מופע חדש לא משנה אם זה בהתחלה של הform השני או בסוף שלו.

בform אחר שנקרא formMenu אני פותח new לchooseLine

 private void ChooseLineClick(object sender, EventArgs e)
{

ChooseLine choose_line = new ChooseLine();
choose_line.SetBounds(0, 0, 2000, 2000);
choose_line.Show();

}

איך אני יכול ליצור הפניה לאובייקט chooseLine בלי ליצור מופע חדש?

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

נניח שהטפסים נקראים FormA ו-FormB.

FormA מכיל את ה-ComboBox ו-FormB הוא זה שמאוכלס בהתאם לערך של ה-ComboBox.

FormA צריך להחזיק Member מסוג FormB. כשאתה לוחץ על הכפתור ב-FormA, קרא לפונקציה של FormB (נקרא לה PopulateForm) עם הערך שהמשתמש בחר ב-ComboBox. משהו בסגנון של:


mFormB.PopulateForm(myComboBox.SelectedItem);

אחרי ש-FormB קיבל את הערכים הנכונים, הצג אותו למשתמש (למשל mFormB.Show או משהו בסגנון).

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

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

ניסיתי לעשות את זה,הבעיה היא שכאשר אני פותח new לformB זה עושה את כל הפעולות שיש בתוך formB ואז עוד אין לו את הנתון שהפעולה צריכה כדי לאכלס

זה הקוד של הפעולה click של הכפתור בformA:

 private void CheckChoose(object sender, EventArgs e)
{

if ((this.choose.Text.Equals(" 1")) || (this.choose.Text.Equals(" 4")) || (this.choose.Text.Equals("88")))
{

this.Hide();
Line_1 line1 = new Line_1();
line1.SetBounds(0, 0, 2000, 2000);
line1.Show();
}

}

בשורה:

 Line_1 line1 = new Line_1();

כל הפעולות בformB מתבצעות ואני צריך את הנתון הזה בשביל פעולה שנמצאת בformB

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

Line_1 זה FormB?

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

צור אותו פעם אחת (כחלק מה-Constructor של FormA), ושמור אותו כ-member של FormA.

הוסף לו (ל-FormB) פונקציה שמקבלת את הערך מה-ComboBox, וקרא לה אחרי לחיצה על הכפתור.

[

 private void CheckChoose(object sender, EventArgs e)
{

if ((this.choose.Text.Equals(" 1")) || (this.choose.Text.Equals(" 4")) || (this.choose.Text.Equals("88")))
{

this.Hide();
mLine1.Populate(choose.Text);
line1.SetBounds(0, 0, 2000, 2000);
line1.Show();
}

}

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

אוקיי אני חושב שהצלחתי,אני עובד על זה עכשיו,תודה רבה לכולם :xyxthumbs:

אם יש לי string מסוים ואני רוצה לפרק אותו למשל:

 string st2 = "12fd12";
int i = st2[5];

אני לא מבין למה הערך של i יוצא לי 50,איך אני יכול להמיר את זה לטיפוס int שהערך של i יצא לי 2(האיבר במקום ה-5)?

ואיו אפשר להשתמש בparse כי זה לא מחרוזת זה רק תו.

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

הערך ן שלך יוצא 50 מכיוון שזהו הערך של 2 בטבלת האסקי, אם אתה רוצה להוציא מס' מתוך סטרינג אתה יכול לעשות משהו כזה

int.TryParse(st[5].ToString(), out result) ;

כאשר result זה int

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

ארכיון

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

×
  • צור חדש...