פורסם 2006 במאי 1919 שנים שלום, אני עובד ב #C בVS2003.יש לי FORM ראשי של האפליקציה, אני פותח עוד חלון קטן ששואל "כמה ניסיונות אתה מעוניין לבצע?" ולפי המספר שהמשתמש מכניס אני אמור ליצורמספר של כפתורים על ה- FORM .אני עדיין חדש בקטע של תכנות לווינדוס אבל מהכרותי עם התוכנה זה בטוח לא מסובך.. אז אם למישהו יש את הדרך אני אשמח.תודה מראש.
פורסם 2006 במאי 1919 שנים הבעיה שלך היא ביצירה הדינמית של הכפתורים או בהעברה של המידע בין הטפסים (או בשניהם)?איך הכפתורים צריכים להיות מסודרים בחלון?בסה"כ זאת משימה פשוטה לביצוע, אך דרושים מעט יותר פרטים, כמו איך הכפתורים יהיו מסודרים בחלון, האם לכולם אותו event handler ללחיצה וכו', כדאי שנוכל לתת לך את הפתרון המדוייק.
פורסם 2006 במאי 1919 שנים מחבר בעיקרון הבעייה היא בראשון, אני לא יודע איך ליצור את הכפתורים בצורה דינמית, לאחר מכן לא אמורה להיות העברת מידע ביניהם אלא ביניהם לבין רכיבים אחרים.אם תוכל לעיין בתרגיל עצמו, תבין יותר טוב ממה שאני אצליח להסביר...תודה![attachment deleted by admin]
פורסם 2006 במאי 1919 שנים תראה בעיקרון הקוד לא הכי נקי, ואפשר אולי לייעל אותו אבל זה הבסיס:יצרתי מחלקה עבור הפאנל עם ה-4 פנלים הקטנים: class AnswerPanel : Panel { private Panel[] _subPanels; public AnswerPanel(Size size, int x, int y, int innerSpace) { Size subPanelSize = new Size((size.Width - innerSpace * 3 - 2)/2, (size.Height - innerSpace * 3 - 2)/2); _subPanels = new Panel[4]; _subPanels[0] = CreateSubPanel(subPanelSize, innerSpace, innerSpace); _subPanels[1] = CreateSubPanel(subPanelSize, size.Width - innerSpace - subPanelSize.Width, innerSpace); _subPanels[2] = CreateSubPanel(subPanelSize, innerSpace, size.Height - innerSpace - subPanelSize.Height); _subPanels[3] = CreateSubPanel(subPanelSize, _subPanels[1].Left, _subPanels[2].Top); this.SuspendLayout(); this.Controls.AddRange(_subPanels); this.Size = size; this.Location = new Point(x, y); this.BorderStyle = BorderStyle.FixedSingle; this.ResumeLayout(true); } private Panel CreateSubPanel(Size size, int x, int y) { Panel tmp = new Panel(); tmp.Size = size; tmp.Location = new Point(x, y); tmp.BorderStyle = BorderStyle.FixedSingle; return tmp; } public void MarkGuess(bool[] guesses) { for (int i = 0; i < guesses.Length; i++) if (guesses[i]) _subPanels[i].BackColor = Color.Black; } }זה הקוד של הטופס הראשית: public partial class Form1 : Form private int _numOfGuesses = 5; //holds the number entered by the user private Button[,] _btnGuesses; private AnswerPanel[] _pnlAnswers; private Button[] _btnMarkAnswers; ... private void CreateControls() { //Layout data int startX = 15; int startY = 40; int spaceBetweenLines = 5; int spaceBetweenControls = 10; int panelInnerSpace = 2; Size guessBtnSize = new Size(30, 30); Size markAnswerBtnSize = new Size(30, 20); int xpos, ypos = startY; int markAnswerYAddition = guessBtnSize.Height / 2 - markAnswerBtnSize.Height / 2; EventHandler ehGuessClick = new EventHandler(GuessButtons_Click); EventHandler ehMarkAnswersClick = new EventHandler(MarkAnswerButtons_Click); _btnGuesses = new Button[_numOfGuesses, 4]; _pnlAnswers = new AnswerPanel[_numOfGuesses]; _btnMarkAnswers = new Button[_numOfGuesses]; SuspendLayout(); int i,j; for (i = 0; i < _numOfGuesses; i++) { xpos = startX; for (j = 0; j < 4; j++) { //user guesses buttons _btnGuesses[i, j] = CrateButton(string.Concat("_btnGuesses_", i.ToString(), j.ToString()), "", xpos, ypos, guessBtnSize, ehGuessClick); Controls.Add(_btnGuesses[i, j]); xpos += guessBtnSize.Width + spaceBetweenControls; } //the "Check Answer" button _btnMarkAnswers[i] = CrateButton(string.Concat("_btnMarkAnswers", i.ToString()), "->", xpos, ypos + markAnswerYAddition, markAnswerBtnSize, ehMarkAnswersClick); Controls.Add(_btnMarkAnswers[i]); //the answer panel with the 4 sub-panels xpos += guessBtnSize.Width + spaceBetweenControls; _pnlAnswers[i] = new AnswerPanel(guessBtnSize, xpos, ypos, panelInnerSpace); Controls.Add(_pnlAnswers[i]); ypos += guessBtnSize.Height + spaceBetweenLines; } ResumeLayout(true); } //Create new Button object private Button CrateButton(string name, string text,int x, int y, Size size, EventHandler clickEH) { Button btn = new Button(); btn.Name = name; btn.Size = size; btn.Location = new Point(x, y); btn.Click += clickEH; btn.Text = text; return btn; } private void GuessButtons_Click(object sender, EventArgs e) { //open the color selection form //cast the sender to button and change its BackColor } private void MarkAnswerButtons_Click(object sender, EventArgs e) { } }אני פשוט חייב לזוז, אם תצטרך עזרה / הסבר נוספים אני אשמח לעזור לך מאוחר יותר כשאחזור הביתה.
פורסם 2006 במאי 2119 שנים מחבר תודה רבה!! עוד לא יצא לי לעבור על זה.. בתקווה שאני לא אצטרך עוד עזרה...
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.