כותב |
|
דין אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 16 September 2007 בשעה 14:33 | | IP רשוּם
|
|
|
|
אוקי אני רוצה לעשות מיני תוכנה שמחשבת כל מיני נוסחאות מתמטיות עכשיו נכון כשנגיד הכנסתי את הקוד למחלקה הראשונה (נקרא לה class1) ולאחר מכן יצרתי מחלקה שניה (נקרא לה class2) עכשיו אני רוצה שכאשר המשתמש יתן מספר (1 או 2) ואם זה נגיד 1 אז שיפתח את המחלקה class2 הנה לדוגמה:
קוד: class Program
{
static void Main(string[] args)
{
int n1;
Console.WriteLine("Enter the option (1 or 2):");
n1 = int.Parse(Console.ReadLine());
if (n1 == 1)
Open Class 2
}
} עכשיו איך אני עושה את זה?: "קישור מחלקות"
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 16 September 2007 בשעה 14:43 | | IP רשוּם
|
|
|
|
אתה יכול לדוגמא להוסיף מחלקה class1 ולשים בה מתודה סטטית Main (כמו בקוד ששלחת) ואז לקרוא לקוד הבא:
גישה יותר oopית תהיה יצירת interface שייתן לשנות את מקור הקלט ואת הפלט, ושיכלול את המתודה של הקריאה...
ואז הקוד גם יהיה יותר נחמד, כי תוכל להשתמש במערך של Type, או אפילו להשתמש ב-reflection.
אבל שיהיה, עד שתלמד c# אתה מוזמן ללכת על הדרך הראשונה...
אגב, אם אתה הולך על הדרך הראשונה אתה יכול פשוט לשים את המתודות במחלקה הראשון כמו Main גם כסטטיות ואז לקרוא להן פשוט...
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
dinbrca משתמש מתחיל
הצטרף / הצטרפה: 16 September 2007
משתמש: מנותק/ת הודעות: 20
|
נשלח בתאריך: 16 September 2007 בשעה 15:41 | | IP רשוּם
|
|
|
|
(אני זה "דין")
אחי לא ממש הבנתי אני די מתחיל נגיד יצרתי פרויקט חדש מסוג: "Console Application"
עכשיו
יש לי את המחלקה הראשית שנקראת Program.cs בצד ימין בחלון:
"Solution Explorer"
עכשיו אני יוצר מחלקה חדשה (עדיין בצד ימין) שהיא מקבלת שם אוטומטית ושמה class1.cs
עכשיו אלו שורות הקוד הבאות שיש במחלקה class1.cs:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Class1
{
}
}
עכשיו אני רוצה שכאשר אני מריץ את התוכנה והמשתמש לחץ על 1 נגיד אז יפתח לי בחלון (שחור) חדש המחלקה class1.cs
עכשיו מה אני עושה בשביל שהיא תפתח בחלון חדש ותעשה את ההוראות שאני רוצה?
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 16 September 2007 בשעה 15:59 | | IP רשוּם
|
|
|
|
שיו לאנשים שמתחילים ובאים לשאול בפורום לפעמים יש כאלה שאלות מוזרות...
אם אתה מתעקש שזה יהיה ככה אתה יכול תהשתמש ב-
Process.Start("bla bla")
כאשר bla bla זה נתיב ל-exe של פרוייקט אחר...
עכשיו תחשוב שוב האם זה באמת נחוץ ?
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
dinbrca משתמש מתחיל
הצטרף / הצטרפה: 16 September 2007
משתמש: מנותק/ת הודעות: 20
|
נשלח בתאריך: 16 September 2007 בשעה 16:10 | | IP רשוּם
|
|
|
|
אין דבר כזה Process ומה הכוונה האם זה באמת נחוץ ודבר שני אני לא כזה מתחיל
אני למדתי Visual Basic ועכשיו עליתי לי' והתחלנו ללמוד C# (רק התחלנו ללמוד מחשבים ואני עוקף את כולם ועומד לגמור את הספר) ועכשיו אני בלולאות אבל לא רשום בספר כלום
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 16 September 2007 בשעה 16:13 | | IP רשוּם
|
|
|
|
System.Diagnostics.Process
והכוונה באם זה באמת נחוץ היא מה למשל תעהש כשתגיע ל-11 תוכנות, ולמה אי אפשר לכתוב את כל הקוד במחלקה אחת, ולמה צריך לפתוח חלון חדש, ואם אתה מתעקש על חלון חדש אז למה לא ללכת על GUI עם windows form ?
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
dinbrca משתמש מתחיל
הצטרף / הצטרפה: 16 September 2007
משתמש: מנותק/ת הודעות: 20
|
נשלח בתאריך: 16 September 2007 בשעה 16:25 | | IP רשוּם
|
|
|
|
על פי מה שהבנתי עושים משהו כזה (בשביל לקשר בין מחלקות):
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
System.Diagnostics. Process.Start("Bla");
}
}
class Bla
{
Console.WriteLine("Bla");
}
}
עכשיו
תשנה לי את הקוד כך שכאשר אני יריץ את התוכנה אז המחלקה Bla תפעל ותפתח בחלון חדש... תודה שאתה עוזר לי אני יודע שאני מציק חחח
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 16 September 2007 בשעה 16:30 | | IP רשוּם
|
|
|
|
קודם כל מה שעשי ב-Bla זה לא מחלקה זה (אי אפשר סתם לכתוב קוד מחוץ למתודה)
חוץ מזה, מה שאני התכוונתי שאם אתה רוצה חלון חדש, צור פקוייקט חדש, ואז הקוד של הפתיחת חלון צריך להיות
קוד:
Process.Start(@"..\..\class1\bin\release\class1.exe"); |
|
|
כאזה המחרוזת הזאת זה המיקום היחסי של ה-exe שאתה רוצה לפתוח...
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
dinbrca משתמש מתחיל
הצטרף / הצטרפה: 16 September 2007
משתמש: מנותק/ת הודעות: 20
|
נשלח בתאריך: 16 September 2007 בשעה 17:01 | | IP רשוּם
|
|
|
|
סתכל אחי נכון רשמת "..\..\class1\bin\release\class1.exe" עכשיו אני עשיתי ככה:
יש לי שני פרויקטים עכשיו אחד מהפרויקטים זה פרויקט ראשי ולו קוראים ConsoleApplication1 ולשני קוראים Multiplication Formula 2 עכשיו איפה שרשמת:
Process .Start(@"..\Multiplication Formula 2\Multiplication Formula 2\Program.cs");
כלומר שילך אחורה פעם אחת ולאחר מכן יכנס לתיקיה Multiplication Formula 2 ואז לתיקיה Multiplication Formula 2 ואז כשהלכתי לתיקיה bin ואז לתיקיה release לא היה לי שם כלום... =[ אז מה אני יעשה?
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 16 September 2007 בשעה 17:34 | | IP רשוּם
|
|
|
|
מהתחלה, שלח את המבנה של הקבצים בתיקיות...
ואגב, רק אחרי שתלחץ ctrl+f5 בו ctrl+shift+b בכל אחד מהפרוייקטים יהיה משהו בתקיקייה הזאת...
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
dinbrca משתמש מתחיל
הצטרף / הצטרפה: 16 September 2007
משתמש: מנותק/ת הודעות: 20
|
נשלח בתאריך: 16 September 2007 בשעה 18:14 | | IP רשוּם
|
|
|
|
על פי מה שהבנתי בהתחלה זה אמור להיו כמו פה:
http://www.upfree.net/download.php?file=619Bla.rar
אבל על פי מה שאני מבין עכשיו אז אני צריך לחבר שני פרויקטים ולהפוך אותם לאחד נכון?
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 16 September 2007 בשעה 18:33 | | IP רשוּם
|
|
|
|
אתה לא חייב לחבר את הפרוייקטים, באופן עקרוני אתה יכול לשים אותם באותו solution, אבל זה לא כזה משנה (עדיף לצורך סדר ונקיון)
פשוט במקום ליצור פקויירט חדש, ב-solution explorer אתה לוחץ על ה-solution עם העכבר הימני, Add > New Project
עכשיו לנושא, לחלוטין לא הבנת מה אני מנסה לומר...
אתה לא יכול לפתוח חלון חדש אלא אם כן הוא רץ בנפרד, וזה משהו מטומטם לעשות, אבל שיהיה...
בשביל לעשות את זה אתה מריץ EXE נפרד...
למשל בדוגמא ששלחת זה צריך להיראות ככה:
קוד:
System.Diagnostics.Process.Start(@"..\..\..\..\Multiplication Formula 2\Multiplication Formula 2\bin\release\Multiplication Formula 2.exe"); |
|
|
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
dinbrca משתמש מתחיל
הצטרף / הצטרפה: 16 September 2007
משתמש: מנותק/ת הודעות: 20
|
נשלח בתאריך: 16 September 2007 בשעה 18:49 | | IP רשוּם
|
|
|
|
אוקי אז נגיד שאני לא רוצה להריץ EXE בגלל שזה יוצא עוד פרויקט ואז לוקח כפול 2 מקום
אז אני רוצה להריץ מחלקה אחרת אז מה אני עושה? כלומר יצרתי מחלקה חדשה במין דף חדש כזה עכשיו איך אני עושה קישור מהמחלקה של הProgram.cs למחלקה החדשה? כאילו שיפעיל את זה (אם אפשר גם בדף חדש) :) תודה שאתה עוזר לי..
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 16 September 2007 בשעה 22:40 | | IP רשוּם
|
|
|
|
למה נראה לך שלמחלקה קוראים program.cs ?
זה לא HTML או משהו שיש קישורים בין מחלקות.
אתה יכול ליצור אובייקט של מחלקה אחרת ולהפעיל בו פונקציות, אבל באפליקציה מסוג Console יש חלון אחד לכל process.
עכשיו מה לעזאזל מונע ממך להשתמש באותו חלון ?
ולמה לעשות את הכל ב-Console ולא ב-Windows Application ?
אני הפסקתי לענות או שאני אפסיק לענות עוד תגובה אחת כי ההתעקשות שלך לדחוף את הקיר עם הראש ממש מעצבנת אותי.
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
dinbrca משתמש מתחיל
הצטרף / הצטרפה: 16 September 2007
משתמש: מנותק/ת הודעות: 20
|
נשלח בתאריך: 16 September 2007 בשעה 22:51 | | IP רשוּם
|
|
|
|
לעשות ב Console בגלל שעוד לא למדתי את ה Windows Application אני יודע אותו רק ב Visual Basic ובC# עוד לא למדנו או למדתי את זה ודבר שני מה שמונע אותי להשתמש באותו חלון זה שאני אוהב להיות מסודר ואם אני ישים את זה בחלון חדש אז זה יצא יותר יפה וככה אני אוהב את זה יותר ודבר שלישי אני התכוונתי כמו שאמרת כלומר הכוונה שיצרתי מחלקה בclass1.cs ואני רוצה שיפתח בחלון חדש נגיד מתי שאני הכניס 1.
|
חזרה לתחילת העמוד |
|
|