ABA


"ב CSHARP צריך עזרה ב IF ו ELSE :"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #14857 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 14857
Nexus

   16:55   24.07.08   
אל הפורום  
  ב CSHARP צריך עזרה ב IF ו ELSE :  
 
   עבר עריכה לאחרונה בתאריך 24.07.08 בשעה 21:20 על-ידי Nesher (מנהל הפורום)
 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Form2 a;

public Form1()
{

InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
// Display color dialog
colorDialog1.ShowDialog();
//Set the form's background color
this.BackColor = colorDialog1.Color;
}

private void button2_Click(object sender, EventArgs e)
{
//Form2 myForm2 = new Form2();


//myForm2.Show();

if (a == null)
{
a = new Form2();
a.Show();
}

else
{

}


}
}

}

השאלה שלי איך אני סוגר את ה
IF
יענו ב
ELSE
מה אני צריך לשים ?
אני רוצה שאם
A לא שווה לנול
אז זה יחזור לתחילת התוכנית רגיל .
ואני אוכל שוב לפתוח חלון
FORM2
אבל כל פעם אוכל לפתוח חלון של
FORM2
רק פעם אחת .

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



                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  מכתב Mr Andersson 24.07.08 20:15 1
     צודק לא צריך ELSE אבל הבעיה : Nexus 24.07.08 23:12 2
         ברור שהוא יפתח רק פעם אחת... Nesher  25.07.08 00:51 3
             הוא לא צריך לעשות a = null בפונ' של הסגירה של Form2 ? Mr Andersson 25.07.08 03:11 4
                 בדיוק ,הוא צריך לאפס את המשתנה לNULL, akoka 25.07.08 05:37 5
  ב FORM2 תעשה משתנה סטטי Sn00py  25.07.08 12:07 6
     וזה תלוי בשימוש, אבל אם אתה צריך שה FORM Sn00py  25.07.08 12:09 7

       
Mr Andersson
חבר מתאריך 19.3.02
6234 הודעות, 1 פידבק
   20:15   24.07.08   
אל הפורום  
  1. מכתב  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 24.07.08 בשעה 20:16 בברכה, Mr Andersson
 
קודם כל תשים את הקוד ב[code][/code] ותצמיד לשמאל, ככה זה יהיה הרבה יותר נוח לקריאה,
דבר שני - אם הבנתי נכון אתה רוצה שForm2 יהיה פתוח רק פעם אחת, אז בשביל זה לא צריך else, כשמגיעים לבדיקה אם a הוא null ורואים שהוא לא null אז פשוט לא עושים כלום, התוכנה מדלגת על הבלוק של הif וממשיכה הלאה.

http://i60.tinypic.com/35aowg8.jpg


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nexus

   23:12   24.07.08   
אל הפורום  
  2. צודק לא צריך ELSE אבל הבעיה :  
בתגובה להודעה מספר 1
 
   אני מפעיל את התוכנה והוא פותח לי את FORM2 פעם אחת באמת ולא בלי סוף חלונות .

הבעיה שאחרי שהוא פותח את FORM2 ואני סוגר אותו ידנית הוא לא פותח אחרי זה את FORM2 שוב גם לא פעם אחת . אני לוחץ על OPEN FORM2 וזה לא עושה כלום .

השאלה איך אני עושה שהוא יתאפס יענו שכל פעם אני אוכל לפתוח את FORM2 אבל רק פעם אחת .

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

מה שקורה שהוא נעול כנראה בלולאה ופשוט לא חוזר לאן שצריך .
ואז אני לוחץ וזה פותח פעם אחת את FORM2 אבל אז אם אני סוגר רק את החלון של FORM2 הוא לא פותח אותו שוב .

תודה על העזרה .


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nesher  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.7.02
2 הודעות, 24 פידבק
   00:51   25.07.08   
אל הפורום  
  3. ברור שהוא יפתח רק פעם אחת...  
בתגובה להודעה מספר 2
 
בתנאי שלך עשית שאם a הוא null אז תיצור מופע שלו ותפתח את החלון
אתה צריך לעשות את הפק' של פתיחת החלון אחרי התנאי ולא בתוכו


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Mr Andersson
חבר מתאריך 19.3.02
6234 הודעות, 1 פידבק
   03:11   25.07.08   
אל הפורום  
  4. הוא לא צריך לעשות a = null בפונ' של הסגירה של Form2 ?  
בתגובה להודעה מספר 3
 
  

http://i60.tinypic.com/35aowg8.jpg


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

   05:37   25.07.08   
אל הפורום  
  5. בדיוק ,הוא צריך לאפס את המשתנה לNULL,  
בתגובה להודעה מספר 4
 
   אחרי כול סגירה של החלון לדעתי.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   12:07   25.07.08   
אל הפורום  
  6. ב FORM2 תעשה משתנה סטטי  
בתגובה להודעה מספר 0
 
   קרא לו opened נניח(bool כמובן), שמוגדר FALSE בהתחלה.

static bool opened = false;

ב Form2_Load תבדוק אם הוא FALSE ואם כן תפתח את החלון, אם לא אל תפתח. אתה יכול לעשות את זה ככה:

private void Form2_Load(object sender, EventArgs e)
{
if (!opened)
opened = true;
else
this.Dispose();
}

אתה יכול להשתמש גם ב e.Cancel לפי דעתי.

בכל אופן, אח"כ ב Form2_FormClosing תשנה את המשתנה כמובן חזרה ל FALSE:


private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (opened)
opened = false;
}

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   12:09   25.07.08   
אל הפורום  
  7. וזה תלוי בשימוש, אבל אם אתה צריך שה FORM  
בתגובה להודעה מספר 6
 
   תמיד יהיה עם אותם נתונים וישמור על הSTATE שלו ושלא יפתח כל פעם FORM חדש כל פעם שסוגרים ונכנסים, אולי כדאי לך לעשות SINGLETON(בנאי סטטי)...

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net