PDA

View Full Version : سوال: مشكل در تغيير عنصر در فرم ديگر از داخل ساير فرم ها



Programmer 1
سه شنبه 14 مهر 1388, 07:13 صبح
سلام ،

من قصد دارم كه وقتي هيچ اطلاعاتي در فیلدها وارد نشود و دکمه افزودن زده شود پيامي در پنجره About در برچسب تعيين شده نمايش داده شود براي اين كار دستورات زير را نوشتم ولي خطا داده ميشود : ( این دستورات را در رویداد کلیک دکمه افزودن قرار داده ام )



Form objMessage=new frmMessage();
objMessage.lblMessage.Text="Message";
objMessage.Show();

خاصيت modifier برچسب رو هم Public قرار دادم ، ولي وقتي در كدهاي بالا مي نويسم objMessage و حالا اگر نقطه زده شود بايد ليست خودكار ظاهر شود كه ظاهر مي شود ولي lblMessage وجود ندارد ، انگار كه اين شي خصوصي است ( در حالي كه اين طور نيست ! )

اَرژنگ
سه شنبه 14 مهر 1388, 08:07 صبح
سلام ،

من قصد دارم كه وقتي هيچ اطلاعاتي در فیلدها وارد نشود و دکمه افزودن زده شود پيامي در پنجره About در برچسب تعيين شده نمايش داده شود براي اين كار دستورات زير را نوشتم ولي خطا داده ميشود : ( این دستورات را در رویداد کلیک دکمه افزودن قرار داده ام )



Form objMessage=new frmMessage();
objMessage.lblMessage.Text="Message";
objMessage.Show();


خاصيت modifier برچسب رو هم Public قرار دادم ، ولي وقتي در كدهاي بالا مي نويسم objMessage و حالا اگر نقطه زده شود بايد ليست خودكار ظاهر شود كه ظاهر مي شود ولي lblMessage وجود ندارد ، انگار كه اين شي خصوصي است ( در حالي كه اين طور نيست ! )

"خاصيت modifier برچسب رو هم Public قرار دادم "از روش اشتباه دارید پیش میرید،به این اصل فکر کنید:
از یک شئی (در این مثال فرم مساج)، درخواست کنید که مقدار برچسبش را عوض کنه.

برچسب را پابلیک نکنید.
پروژه را بفرست درست را بفرستیم.

Programmer 1
دوشنبه 20 مهر 1388, 00:22 صبح
سلام ،

شما گفتيد برنامه رو بفرستيد من هم بعد از كلي سرو كله زدن متوسل به همين كار شدم ، البته علاوه بر اين مشكل ، مشكلات ديگري هم وجود كه همه را در فايل متني موجود در فايل زيپ توضيح داده ام ، دوست عزيز اگر به همه موارد پاسخ دهيد و برنامه را طبق موارد گفته شده تكميل كنيد خيلي از مشكلات فعلي من حل خواهد شد ، منتظر جواب شما و همچنين برنامه كامل شده هستم .

لطفا قبل از اجراي برنامه فايل List.mdb را در درايو C كپي كنيد .

با تشكر /.

38259

Himalaya
سه شنبه 21 مهر 1388, 02:55 صبح
سلام ،

من يك سري كد براي بخش هايي از برنامه نوشته ام ، ولي باز هم مشكلات ديگري وجود دارد ، از شما ممنون مي شم اگر اين برنامه آموزشي رو تكميل كنيد ، طبق موارد زير :

بانك اطلاعات بايد در درايو C قرار گيرد با نام List.mdb كه در فايل زيپ وجود دارد ، لطفا قبل از اجراي برنامه اين فايل رو در آنجا قرار دهيد .


1- وقتي هيچ نامي وارد نشود در ليبل موجود در پنجره frmMessage پيامي ظاهر شود .
2- در هنگام خروج از فرم اصلي برنامه همان پنجره frmMessage ظاهر شود ولي با متن ديگري در ليبيل آن .
2- با زدن دكمه افزودن نام و شماره تلفن به عنوان ركورد جديد به ديتا گريد افزودن شود و بلافاصله نمايش داده شود ، همچنين با افزودن هر ركورد در ستون Row شماره ركورد جديد ثبت شود
3- ديتا گريد به گونه اي باشد كه با كليك بر روي هر مكان سطر انتخاب شود و در همين حالت انتخاب شده اگر كاربر بر روي دكمه حذف كليك كند اين سطر حذف شود و با زدن دكمه ويرايش اين سطر در وصعيت ويرايش قرار گيرد طوري كه بتوان محتواي فيلدهاي آن را تغيير داد .

4- تا زماني كه بر روي دكمه ذخيره كليك نشود هيچ نوع تغييرات ديتا گريد در بانك اطلاعات ثبت نشود اعم از ويرايش و حذف و با زدن اين دكمه هر آنچه در ديتا گريد وجود دارد در بانك اطلاعات ثبت شود .




اگر اين برنامه را طبق موارد گفته شده تكميل نماييد چيزهاي زيادي ياد خواهم گرفت و بسيار از شما ممنون خواهم شد.

با تشكر از زحمات شما دوست عزيز /.


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

البته این جواب یه مقدار دیر شد ولی خوب ،لازم بود...به خاطر خودتون گفتم

اَرژنگ
سه شنبه 21 مهر 1388, 05:08 صبح
سلام ،

شما گفتيد برنامه رو بفرستيد من هم بعد از كلي سرو كله زدن متوسل به همين كار شدم ، البته علاوه بر اين مشكل ، مشكلات ديگري هم وجود كه همه را در فايل متني موجود در فايل زيپ توضيح داده ام ، دوست عزيز اگر به همه موارد پاسخ دهيد و برنامه را طبق موارد گفته شده تكميل كنيد خيلي از مشكلات فعلي من حل خواهد شد ، منتظر جواب شما و همچنين برنامه كامل شده هستم .

لطفا قبل از اجراي برنامه فايل List.mdb را در درايو C كپي كنيد .

با تشكر /.

38259

با سلام،
سایت قابل دسترسی نبود، الان بیدار شدم چک کردم، تصحیح شده را میفرستم.

اَرژنگ
سه شنبه 21 مهر 1388, 10:17 صبح
سلام ،

شما گفتيد برنامه رو بفرستيد من هم بعد از كلي سرو كله زدن متوسل به همين كار شدم ، البته علاوه بر اين مشكل ، مشكلات ديگري هم وجود كه همه را در فايل متني موجود در فايل زيپ توضيح داده ام ، دوست عزيز اگر به همه موارد پاسخ دهيد و برنامه را طبق موارد گفته شده تكميل كنيد خيلي از مشكلات فعلي من حل خواهد شد ، منتظر جواب شما و همچنين برنامه كامل شده هستم .

لطفا قبل از اجراي برنامه فايل List.mdb را در درايو C كپي كنيد .

با تشكر /.

38259

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

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

۲.فرم نمایش پیام، به دانستن پیامی که نشان بده نیاز دارد.

جواب درست با استفاده از نکات بالا کاملا مشخص است :
۱.جلویه ساخته شدن فرم را از عموم صلب میکنیم (یعنی اینکه سازنده را از پابلیک به پرایوت تغییر میدیم):


private frmMessage()
{
InitializeComponent();
}

۲.یک سازنده جدید در اختیار عموم میگزاریم:


public frmMessage(string Message):this()
{
lblMessage.Text = Message;
}

استفاده از این سازنده بدانه در اختیار گذاشتن پیام ممکن نیست. به این شکل احتیاجی از روشهایه چرند من درآوردی بی‌منطق فلسفه برنامه‌نویسی
مانند استفاده از استاتیک و یا پابلیک کردن عناصر فرم نیست.

۳.پروپرتی lblMessage.Autosize را true کنید، چونکه ممکن پیام از سایز لیبل بزرگتر باشد.

۴.از فرم اصلی (چیزی به نام فرم پدر وجود ندارد، منبع این اصطلاحهایه من درآوردی را به من معرفی کنید) و یا از هر جایه دیگر برایه نمایش پیام این ۲ خط کافی است :


Form objFrmMessage = new frmMessage( "میخواهی چی بگم؟" );
objFrmMessage.ShowDialog();

اگرچه میشد این را به یک خط تبدیل کرد، ولی برایه شروع این کافی است.

۵.اصل مشکلات شما به شما ربطی ندارد. قبلا من هم ممکن بود بگم که اگر خودت تلاش کنید جواب را بدست میارید ولی اصل این مسئله نداشتن روشهایه درست است. پیدا کردن روشهایه درست احتیاج به داشتن فلسفه، منطق ، بررسیهایه متداوم و کلی پژوهش است. تا جایی که میبینم، اگر شما از تکنیکهایه درست خبر داشتید در سطح دیگری مشکلات داشتید.
لطفاً به شکل خصوصی به من در مورد اینکه چطوری برنامه نویسی را دارید یاد میگیرید یکمی توضیح بدید. بدانه اینکه روشهایه درست را در اختیار شما قرار بدن کسی حق اشکال گیری بر شما را ندارد. مثل اینکه یکی به شما یک دیکشنری آلمانی به آلمانی بده، با یک کتاب دستور زبان که در آلمانی نوشته شده باشد، بدانه اینکه شما دو نفر را که از لغاط آلمانی استفاده کنند را ببینید از شما انتظار داشته باشند که آلمانی را درست یاد بگیرید!

لطفا فایلی که مشکلات شما را توضیح داده به یونیکد بفرستید، سیستم من فارسی ندارد.

Himalaya
سه شنبه 21 مهر 1388, 13:07 عصر
بهتره تو این زمینه یه مقدار سعی و البته حوصله تون رو افزایش بدید تا خودتون به نتیجه برسید...اونوقت برنامه نویسی براتون شیرین میشه


مثل اینکه یکی به شما یک دیکشنری آلمانی به آلمانی بده، با یک کتاب دستور زبان که در آلمانی نوشته شده باشد، بدانه اینکه شما دو نفر را که از لغاط آلمانی استفاده کنند را ببینید از شما انتظار داشته باشند که تلاش کن یاد گرفتن آلمانی شیرین است

دیگه داری تو کارایی دخالت میکنی که به شما ارتباطی نداره... فکر نمیکنی یه مقدار تند داری میری
شما یه تفکری داری من هم همینطور... هر چه قدر هم که برنامه نویسیت خوب باشه (البته تا اونجایی که من فهمیدم نطق کردنت خیلی بهتره) اجازه نداری به نظر بقیه بی احترامی کنی...

اَرژنگ
سه شنبه 21 مهر 1388, 13:21 عصر
دیگه داری تو کارایی دخالت میکنی که به شما ارتباطی نداره... فکر نمیکنی یه مقدار تند داری میری
شما یه تفکری داری من هم همینطور... هر چه قدر هم که برنامه نویسیت خوب باشه (البته تا اونجایی که من فهمیدم نطق کردنت خیلی بهتره) اجازه نداری به نظر بقیه بی احترامی کنی...

۱ین طرز تفکر را من هم داشتم، طرز تفکر به شما و یا من ربطی ندارد. اگر به این تالار نگاه کنید من هم زمانی به دیگران دقیقاً همین را میگفتم.
بعد از اینکه بارها به من در جواب گفتند اگر بلدی به جایه اینکه اشکال بگیری مثال بده و با کد بنویس ,به اینکه مشکل واقعی چی هست پی بردم. به جایه اینکه انتظار داشته باشم که این دانشجوهایه بیچاره با هزار زحمت یک روش (بیشتر مواقع اشتباه) را پیدا کنند، سعی میکنم که راهنمائی کنم.
بعد از خواندن پست شما به همینکه من هم زمانی چه افکاری داشتم و اینکه دلیل اینکه الان به شکل دیگر فکر میکنم پی بردم.
در حقیقت تمسخر به افکار شما نبود، به اینکه چرا انقدر طول کشید که مشکل واقعی را خودم درک کنم بود. دقیقاً همین حرف را من هم بارها به برنامه‌نویسان دیگر گفتم، ولی الان میبینم که یک یک مثال با بیان منطق و فلسفه درست بهتر از اشکال گیری بدانه مثال است (از تمام کسانی که بهشان بدانه نشان دادن روش صحیح اشکال گرفتم پوزش میخواهم، بالاخره خیاط هم در کوزه افتاد).

داشتم فکر میکردم به جایه اینکه با ایراد گیری برنامه‌نویسی را به بقیه زهرمار کنم، با نشان دادن روشهایه درست شیرین کنم.

کرجی‌جان عزیز، شاید یک روز پایه چایی به همه اینها باهم بخندیم، چونکه عمر کوتاه است و حتی روزی این کهکشان هم خالی از ستاره بود، اونموقع همه این کشمکشهایه من سر روشهایه درست و اصولی و فلسفه درست برنامه‌ریزی چه معنایی خواهد داشت؟

در ضمن هر چقدر هم هر کی ممکن است برنامه‌نویس خوبی باشد، اگر فایده‌ای برایه بقیه نداشته باشد فرقش با کسی که برنامه‌نویس نیست چیه؟(پست قبلیم ویرایش شد که شما ناراحت نشید، امر دیگر بود در خدمت هستیم).

ناراحت شدن ندارد، اگر چیزی که میگم ناراحتتان میکند بگید عوضش کنم، این امضاء به این گندگی را برایه چی درست کردم؟

Himalaya
سه شنبه 21 مهر 1388, 13:57 عصر
نه ناراحت نشدم...
این دفعه میبخشمت:چشمک:... من به شخصه خیلی خیلی قبولت دارم:لبخندساده:

اَرژنگ
سه شنبه 21 مهر 1388, 14:03 عصر
نه ناراحت نشدم...
این دفعه میبخشمت:چشمک:... من به شخصه خیلی خیلی قبولت دارم:لبخندساده:

(پست قبلیم ویرایش شد که به نظر نیاد به پست شما ربط داشته بود ، اگر امری باشد در خدمت هستیم).

Programmer 1
سه شنبه 21 مهر 1388, 22:58 عصر
لطفا فایلی که مشکلات شما را توضیح داده به یونیکد بفرستید، سیستم من فارسی ندارد.

توضيحات همان نقل قولي است كه خانم / آقاي karaji333 در پست 4 قرار داده اند .

منتظر پاسخ به بقيه سوالات هستم

با تشكر /.