
نوشته شده توسط
sara.f
سلام به همگی!
مرسی بچه ها،من مشکلم با همون برنامه آقای ارژنگ حل شد.
فقط یک نکته کوچیک واسه بهبود برنامه آقای ارژنگ می خواستم اضافه کنم، که اگر احتمالا کسی خواست از برنامه ای که آقای ارژنگ گذاشتن، استفاده کنه،می تونه در اون قسمت از کدی که در program.cs نوشته شده:
if (passwordValid )
{
Application.Run(newForm1());
}
این شرط را هم اضافه کنه
(dialogResult == DialogResult.OK)
یعنی میشه:
if (passwordValid & (dialogResult == DialogResult.OK))
{
Application.Run(newForm1());
}
چرا که وقتی کاربر روی دکمه cancel میزنه، مسلما از run کردن برنامه منصرف شده، پس دیگه نیازی به باز شدن فرم اصلی نیست.
اما اگر شرطی که گفتم نباشه، چنانچه کاربر user ,pass را درست وارد کنه و بعد cancel را بزنه، باز هم فرم اصلی باز میشه.
این نکته خیلی کوچیکی بود که به نظرم اومد بهتره بگم، هر چند که می دونم خیلی از دوستان این مورد را می دونستند.
پیروز باشید.

با تشکر بسیار،
از اینکه اشکال را گفتید خیلی خوشحال شدم ،بالاخره یکی اشکال ما را بهمان میگه،
نکتهای که گفتید کاملا درست است نشان میده را موارد بسیار ساده هم میشه اشتباه کرد، اگرچه پیدا کردن این اشکال ساده نیست!!
یک چیزی که همیشه فکرم را مشغول میکنه این است که در این چنین مواردی بهتر است که از این نوع کد استفاده بشه :
if (dialogResult!= DialogResult.OK) return;
if (passwordValid)
یا از همان کد شما:
if (passwordValid & (dialogResult == DialogResult.OK))
اگرچه منتقاً هر دو یک چیز هستند، ولی اولیش اینکه دیگر احتیاج به ادامه دادن نیست را صریحا اعلام میکنه، من نمیدانم از لحاظ خوانائی کد کدام بهتر است (من فکر میکنم اولی ولی برایه اینکه همه شرائط و پیشروی را از هم جدا نگه میداره، از یک حالت سادهتر به نظر میاد).