PDA

View Full Version : مشکل در شروع برنامه (Debug



fatima majidi
پنج شنبه 17 اسفند 1391, 16:36 عصر
سلام دوستان من در vs یک پروژه ایجاد کردم که شامل چندین فرم است, موقع اجرای برنامه و وقتی که debug را شروع میکند فقط فرم اولی که ایجاد کردم را نشان میدهد, به عبارتی من فرم دومی که ایجاد کردم رو debug میکنم که نتیجه آن را ببینم اما فرم اول ظاهر میشود!!!مشکل کار من کجاست؟؟
ممنون...

veniz2008
پنج شنبه 17 اسفند 1391, 17:04 عصر
سلام.
احتمالا فرم اول شما بصورت فرم والد (فرم پیش فرض هست)، در پنجره solution و در فایل program.cs فرم دوم رو به عنوان والد قرار بدید.

fatima majidi
پنج شنبه 17 اسفند 1391, 17:11 عصر
برای اینکه تمام فرم های من ارزش یکسانی داشته باشند (رابطه ی والد و مولدی نداشته باشند) باید چه کار کنم ؟؟؟؟


سلام.
احتمالا فرم اول شما بصورت فرم والد (فرم پیش فرض هست)، در پنجره solution و در فایل program.cs فرم دوم رو به عنوان والد قرار بدید.

veniz2008
پنج شنبه 17 اسفند 1391, 17:26 عصر
برای اینکه تمام فرم های من ارزش یکسانی داشته باشند (رابطه ی والد و مولدی نداشته باشند) باید چه کار کنم ؟؟؟؟
فکر نمیکنم چنین چیزی امکان داشته باشه. بالاخره یه فرمی باید اول اجرا بشه و بقیه وابسته به اون بشن. البته میشه کاری کرد که بعد از اجرا، فرم والد رو بست و فرم های فرزند رو run کرد ولی چنین چیزی رو توصیه نمیکنم چون در انجام بعضی کارها با خطا مواجه میشید.

fatima majidi
پنج شنبه 17 اسفند 1391, 17:47 عصر
ممنون که پاسخ میدین ولی من گیج شدم , پروژه ی من ازین قراره که یک پروژه به اسم چک لیست ساختم, که باید اول فرم یوزر و پسورد تکمیل شود سپس چندین فرم بعدی که طراحی کردم به ترتیب پر شود و ثبت شود. ولی الان که من فرم های دوم و سوم رو می خواهم دیباگ کنم فقط فرم اول را باز میکند<مشکل من اینه باید چه کار کنم که هر فرمی که خواستم رو بتونم دیباگ کنم؟؟؟؟


فکر نمیکنم چنین چیزی امکان داشته باشه. بالاخره یه فرمی باید اول اجرا بشه و بقیه وابسته به اون بشن. البته میشه کاری کرد که بعد از اجرا، فرم والد رو بست و فرم های فرزند رو run کرد ولی چنین چیزی رو توصیه نمیکنم چون در انجام بعضی کارها با خطا مواجه میشید.

veniz2008
پنج شنبه 17 اسفند 1391, 17:59 عصر
واسه مشکل شما چندین راه حل وجود داره. اگر قراره که مراحل کار به ترتیب انجام بشه میتونید از یک TabControl استفاده کنید که چندین tabpage داره و در هر tabpage یک بخش از اطلاعات رو ثبت کنید و تا زمانیکه اطلاعات tabpage اول ثبت نشده اجازه ورود به tabpage2 رو نداره (این کار براحتی قابل کنترل هست).
اما اگر اصرار بر باز شدن فرم های جداگانه دارید، خوب اولین فرمی که قراره اطلاعات داخلش ثبت بشه رو به عنوان فرم والد بذارید و درون دکمه ثبت اطلاعات، اگر اطلاعات با موفقیت ثبت شد، فرم2 رو اجرا کنید و در فرم 2 هم همین روند رو ادامه بدید.

fatima majidi
پنج شنبه 17 اسفند 1391, 18:36 عصر
پس یعنی می فرمایید که اینکه موقع دیباگ کردن فرم اول اجرا میشه این نشان دهنده ی اشکال در برنامه نیست؟؟؟
دلیل پافشاری من اینه که فکر میکردم به خاصر اشتباه من این اتفاق می افته...!!!

veniz2008
پنج شنبه 17 اسفند 1391, 18:43 عصر
ببیند فرم آغازین رو هر کسی یه چیزی در نظر میگیره. نرم افزاری رو در نظر بگیرید که شامل فرم لاگین، فرم اصلی و فرم های دیگه هستش. بعضی از دوستان فرم والد رو فرم لاگین در نظر میگیرن و در صورت صحیح وارد شدن یوزر و پسورد، فرم اصلی رو نشون میدن. بعضی دیگه فرم والد رو فرم اصلی در نظر میگیرن و در formload میان و فرم لاگین رو نمایش میدن. (یعنی قبل از نشون دادن فرم اصلی اول فرم لاگین رو نمایش میدن). اینکه چه فرمی به عنوان والد در program.cs قرار بگیره بستگی به شما و نیاز شما داره.
توصیه من استفاده از TabControl هست ولی اگه اصرار بر فرم های متعدد دارید باید قبل از پر کردن فرم 2 اول باید در دیتابیس چک کنید که آیا فرم1 مربوط به اون رکورد پر شده یا نه. تصمیم درست رو خودتون باید بگیرید.

abbas.oveissi
پنج شنبه 17 اسفند 1391, 18:52 عصر
پس یعنی می فرمایید که اینکه موقع دیباگ کردن فرم اول اجرا میشه این نشان دهنده ی اشکال در برنامه نیست؟؟؟
دلیل پافشاری من اینه که فکر میکردم به خاصر اشتباه من این اتفاق می افته...!!!

شما وقتی برنامه رو اجرا یا دیباگ میکنی،اول تابع main در فایل program.cs اجرا میشود در داخل آن هم هر فرمی را که در داخل کد Application.Run(new Form1()); نوشته باشید به عنوان فرم شروع برنامه اجرا میکند،اگر میخوای فرم شروع را عوض کنی داخل این متد را عوض کن.

daneshjo90
جمعه 18 اسفند 1391, 00:10 صبح
با سلام

خب دوست عزیز شما وقتی اطلاعات رو که از فرم 1 گرفتی و تموم شد و میخوای فرم 2 رو باز کنی باید یه دکمه داشته باشی که وقتی روش کلیک میکنی به فرم 2 بره و بعد از اون بقیه فرم ها
امیدوارم بلد باشید
اینطوری که شما توضیح دادید معلومه که مبتدی هستین

بازم مشکلی بود در خدمتیم تا جایی که بلد باشیم توضیح میدیم

موفق باشی

fatima majidi
جمعه 18 اسفند 1391, 09:52 صبح
متشکرم از همه ی دوستانم,
اینکه باید فرم ها به ترتیب پر شوند رو فراموش کنید,کاربر من باید بعد از وارد کردن یوزر و پسورد یکی از 5 جدول موجود رو (در زمانهای مختلف روز) به دلخواه انتخاب کند و تکمیل کند,برای رسیدن به این منظور ایا بهتر که فرم های جداگانه برای هر جدول بسازم یا همانطور که venis2008 گفتن از tabcontrol استفاده کنم؟تفاوت این دو در چیه؟
من تا قبل از این با vs برنامه های کوچیک نوشته بودم ولی الان این یه پروژه ی بزرگه واسه من, که ممنون میشم اگه کمکم کنید تا مشکلاتم رو حل کنم,اگه بهم منابعی رو هم معرفی کنید ممنون میشم.

veniz2008
جمعه 18 اسفند 1391, 10:17 صبح
معمولا از لحاظ ظاهر برنامه موقعی از tabcontrol استفاده میشه که قراره مقادیر مربوط به یک موضوع در چند مرحله گرفته بشه. مثلا در سیستم برگزاری آزمون برای دانش آموزان در یک تب کنترل و در چند تب پبج مختلف، مشخصات فردی، مشخصات آزمونی و مشخصات مالی (تعیین اقساط) رو پیاده سازی میکنن. یعنی بعد از ثبت مشخصات اولیه دانش آموز، بصورت خودکار به تب پیج بعدی میریم و برای دانش آموز ازمون انتخاب میکنیم و بعد از تعیین آزمون ها به تب پیج وضعیت مالی میریم و با توجه به آزمون ها انتخابی در مرحله قبل و ... شهریه آزمون ها و مبلغ قابل پرداخت رو مشخص میکنیم. این فقط یه مثال بود تا متوجه بشید بهتره در چه زمان هایی از تب کنترل و تب پبج استفاده بشه.
تب کنترل و تب پیج هم نمای زیباتری دارن و هم سرعت دسترسی به بخش های مختلف رو سریعتر میکنن. ولی بستگی به شرایط برنامه داره.

mehdi zanjani
جمعه 18 اسفند 1391, 10:24 صبح
تو فایل program.cs تو پنل solution explorer میتونید تعیین کنید کدوم فرم ، فرم اصلی شما باشه یعنی وقتی برنامه رو اجرا میکنید کدوم فرم اول نمایش داده بشه. برای اینکه فرم ها به تریتیب اجرا بشن خب کافیه بعد از نمایش فرم بعدی فرم فعلی رو با this.close ببندید دیگه. البته اینکار خیلی مبتدیانه است بهتره از tabControl استفاده کنید. اگه مشکلتون حل نمیشه دقیقا بگید میخاوید چیکار کنید شاید بشه بهتر راهنمایی کرد.

fatima majidi
جمعه 18 اسفند 1391, 11:30 صبح
با سپاس از همه ی دوستان,
پروژه ای که میخوام انجام بدم شامل چندین جدول میشه که در هر کدام از این جداول ها وضعیت یک دستگاه ثبت میشه ,یعنی کاربر باید وارد برنامه شه و یکی از جداول رو انتخاب کنه و اون رو تکمیل کنه جدول ها هر کدام شامل اطلاعات مجزایی هستند که مربوط به یک دستگاه خاص است که با توجه به توضیحات دوستان اینطور فهمیدم که از tab control نباید استفادکنم چون جداولی که قراره بسازم بهم ارتباط ندارند,
از طرفی, اگر بخوام از فرم های مختلف برای ساخت جداول مختلفم استفاده کنم باید با فرم والد که موقع دیباگ باز میشود چه کار کنم؟ایا فرم والد رو یوزر و پسورد بگیرم کشگل حل میشود؟در اینصورت فرقش با مواقعی که از panel برای یوزر و پسورد استفاده میشه چیه؟

mehdi zanjani
جمعه 18 اسفند 1391, 12:26 عصر
یه فرم واسه لاگین ایجاد کن بعد اینکه کاربر لاگین کرد به فرم اصلی وارد بشه ، حالا تو فرم اصلی از menustrip استفاده کن واسه هر جدول یه منو و یه فرم جداگانه بدون اینکه فرم اصلی بسته شه فرم های جدول ها جداگانه واسه کاربر قابل دسترسیه.

fatima majidi
جمعه 18 اسفند 1391, 16:51 عصر
یعنی شما میگید که واسه هر جدول یک فرم بسازم, اونوقت اون مشکل اولم که موقع دیباگ فرمهای دیگه همش فرم والد اجرا میشد رو چه کار کنم؟؟؟

در ضمن استفاده از منواستریپ چه کمکی به ساخت جدولهام میکنه؟؟


یه فرم واسه لاگین ایجاد کن بعد اینکه کاربر لاگین کرد به فرم اصلی وارد بشه ، حالا تو فرم اصلی از menustrip استفاده کن واسه هر جدول یه منو و یه فرم جداگانه بدون اینکه فرم اصلی بسته شه فرم های جدول ها جداگانه واسه کاربر قابل دسترسیه.

veniz2008
جمعه 18 اسفند 1391, 18:19 عصر
یعنی شما میگید که واسه هر جدول یک فرم بسازم, اونوقت اون مشکل اولم که موقع دیباگ فرمهای دیگه همش فرم والد اجرا میشد رو چه کار کنم؟؟؟

در ضمن استفاده از منواستریپ چه کمکی به ساخت جدولهام میکنه؟؟
دوست من، شما مشکلاتت اساسی هست. یعنی در مفاهیم مشکل داری و نمیدونی باید چطور کارها رو انجام بدی. تمام پروژه ها یک فرم والد(یه فرم اولیه) دارن. بعد از اونکه این فرم اجرا شد کاربر هر قسمتی رو انتخاب کنه باید اون قسمت فعال بشه. چطور فعال میشه؟ خوب باید کد فعال شدن اون قسمت رو در پشت دکمه یا در پشت منو بنویسیم.
مثلا اگر کاربر قراره با زدن یک دکمه فرم 2 رو باز کنه میتونید پشت اون دکمه اینطور بنویسید:

Form2 f2 = new Form2();
f2.ShowDialog();
شما باید برای تمام قسمت های پروژه و در رویداد کلیک دکمه یا رویداد کلیک منو کدهای فعال سازی اون فرم رو بنویسی.
موفق باشی.