PDA

View Full Version : سوال: ذخیره تنظيمات فرمهاي برنامه



parnia_mb
شنبه 05 مرداد 1387, 13:25 عصر
با سلام
من یه فرم دارم که روی اون یه دکمه دارم . وقتی که برنامه در حال اجراست ، با کدهایی که برای این دکمه نوشتم ، جای این دکمه را روی فرم عوض می کنم . حالا میخوام برا همیشه جای این دکمه همون جای جدیدی بشه که من مشخص کردم . یعنی میخوام وقتی که پروژه رو بستم و دوباره باز کردم ، دکمه جایی باشه که من دفعه قبل موقع اجرا گذاشتمش.
ممنون میشم اگه راهنماییم کنید

Alen
شنبه 05 مرداد 1387, 13:52 عصر
كافيه قبل از ايجاد شيي از فرم كه براي showdialog ازش استفاده مي كني چك كني كه اگه null بود ايجادش كني وگرنه از همون قبلي استفاده كني . در ضمن اين شي بايد global باشه.
بله حق با دوست خوبم افشين هست. من خوب به سوال توجه نكردم.اين حالت كه من گفتم براي زماني مفيده كه پروژه بسته نشه

parnia_mb
یک شنبه 06 مرداد 1387, 08:04 صبح
من متوجه منظورتون نشدم . میشه خواهش کنم بیشتر توضیح بدید؟

afshin_h_m
یک شنبه 06 مرداد 1387, 10:20 صبح
سلام ...

با اجازه دوستان....
چون پروژه بسته میشود حتی متغیرهای Global هم مقدار اولیه خودشون میگیرن..لذا کنترلهای روی فرم نیز در جای اولیه خودشون قرار میگیرن...

پس بهتر است آخرین موقعیتی که کلید روی فرم دارد را در یک متغیر در databaseذخیره کنید ودر ()form_load این مقدار را از database خوانده و به خاصیت موقعیت کلید بدهید..

دوستان اگر راه بهینه تری هست راهنمایی کنید..

hozouri
یک شنبه 06 مرداد 1387, 10:34 صبح
برای این کار حتماً لازم نیست داخل یک DataBase مختصات دکمه رو ذخیره کنی میتونید از یک فایل که مختصات دکمه بر روی اون ذخیره بشه استفاده کنید و موقع Load شدن فرم هم مختصات دکمه (یا هر کامپوننت دیگه) را از فایل مربوطه بگیرید که در این راه حل مشکل های باد گیری دستورات بانک اطلاعاتی ارتباط با بانک اطلاعاتی و ... را نخواهید داشت.

parnia_mb
یک شنبه 06 مرداد 1387, 13:15 عصر
از همه دوستان که منو راهنمایی کردند ممنونم . من یک فایل جدید ساختم و مقدار xوy که برای location دکمه جدیدم بود رو از توی اون خوندم و مشکلم حل شد. حالا میخوام بدونم اگه به صورت داینامیک یه control مثل دکمه و یا textbox رو ساختم چه کار میتونم بکنم که وقتی پروژه بسته شد و دوباره باز شد این control که به صورت داینامیک ساخته شده پاک نشه و نشون داده بشه؟

naeeme
یک شنبه 06 مرداد 1387, 13:56 عصر
از همون روش فایل اسفاده کنین.
یه ساختار برای خودتون استاندارد کنین که مثلا از کنترلهایتون مشخصات زیر رو نگه داری کنین:
نام، نوع، محل قرارگیری و ....
حالا هر کنترلی که تغییراتی داره یا به وجود اومده رو در این ذخیره کنین. موقع لود شدن هم بررسی کنین اگه کنترل بود، مشخصاتش رو ست کنین، اگه نبود، با مشخصات داده شده ایجادش کنین

Sajjad.Aghapour
یک شنبه 06 مرداد 1387, 17:56 عصر
دوست عزیز بهترین راه برای ذخیره تنظیمات درونی یک برنامه استفاده از configuration هست.به این صورت که در App.Config(روی Properties در solution دابل کلیک کرده و در پنل setting) متغیری از نوع Point ایجاد و در هنگام لود شدن برنامه location مربوط به دکمه رو برابر اون قرار میدی و در هنگام بستن برنامه مقدار اون رو برابر location جدید دکمه قرار میدی.
یه نمونه برات گذاشتم.شاید به دردت بخوره......

parnia_mb
دوشنبه 07 مرداد 1387, 17:30 عصر
ممنونم ازتون . ببخشید من .net 2005 دارم. نتونستم برنامه شما رو باز کنم :(

Sajjad.Aghapour
دوشنبه 07 مرداد 1387, 23:11 عصر
سلام دوست عزیز.
ببخشید.من 2005 نداشتم که براتون بذارم.ولی کدها رو براتون میذارم.اول روی properties در پنجره olution دابل کلیک کنید و در پنل settins متغیری از نوع System.Drawing.Point ایجاد کنید که من اون رو به نام ButtonPoint ایجاد کردم و مقدار value اون برابر 0,0 قرار بدید...
کدهای لازم جهت حرکت Button رو که خودتون نوشتید.مابقی کدها به این صورته....


private void Form1_Load(object sender, EventArgs e)
{
button1.Location = Properties.Settings.Default.ButtonPoint;
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Properties.Settings.Default.ButtonPoint = button1.Location;
Properties.Settings.Default.Save();
}

اگه بازم سوالی پیش اومد بگو برات توضیح بدم....

razavi_university
سه شنبه 08 مرداد 1387, 00:46 صبح
همون طوری که جناب SajadLOve فرمودند بهتره اینگونه تنظیمات درون AppConfig قرار بگیره
البته روش ساده تری هم علاوه بر روشی که ذکر شد وجود دارد می تونین از Properties کنترلی که مِی خواهید خاصیت ازش ذخیره بشه
در قسمت Data/ApplicationSetting/PropertyBinding خاصیت مورد نظرتون رو انتخای می کنین و مقادیر و مشخصاتش رو مشخصی می کنین
البته همونطوری که گفتم هر دو روش یکی است و در Config ذخیره می کند