PDA

View Full Version : form1.resx



pooyansystem
سه شنبه 27 بهمن 1388, 13:55 عصر
سلام
وقتي يه form تو برنامه قرار ميديم يه form.resx در solution explorer زير مجموعه form قرار ميگيره كه خاصيت فرم و كنترل هاش رو ذخيره ميكنه . آيا موقع اجراي برنامه فرم و كنترل هاي توش خصوصياتشون رو از اينجا مي گيرن و آيا ميشه از طريق كد نويسي form.resx روتغيير داد ؟

r00tkit
سه شنبه 27 بهمن 1388, 17:36 عصر
http://www.c-sharpcorner.com/UploadFile/yougerthen/105262008135822PM/1.aspx


http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/5f66ea10-85be-4cc9-9e52-5affbcbfee7f



http://stackoverflow.com/questions/676312/modifying-resx-file-in-c

علیرضا حسن زاده
سه شنبه 27 بهمن 1388, 17:45 عصر
سلام
وقتي يه form تو برنامه قرار ميديم يه form.resx در solution explorer زير مجموعه form قرار ميگيره كه خاصيت فرم و كنترل هاش رو ذخيره ميكنه . آيا موقع اجراي برنامه فرم و كنترل هاي توش خصوصياتشون رو از اينجا مي گيرن و آيا ميشه از طريق كد نويسي form.resx روتغيير داد ؟

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

pooyansystem
چهارشنبه 28 بهمن 1388, 09:30 صبح
دوست عزيز geek1982 من نمي خوام يه فايل resource را ايجاد كنم يا تغيير بدم

من مي خوام به كاربر اين اجازه را بدم كه فونت و اندازه و رنگ و... كنترل هاي برنامه رو خودش تغيير بده و ذخيره كنه و دفعه بعد با خصوصيات ذخيره شده باز شه اگه بخوام با فايل اين كار را بكنم سرعت برنامه مياد پايين . من مي خوام form.resx رو تغيير بدم آيا امكانش هست

r00tkit
پنج شنبه 29 بهمن 1388, 00:13 صبح
سلام من زیاد روش کار نکردم .ولی....

فرض می کنم روش ذخیره ی key/value رو توی resx. می دونی (توی لینک های بالا هست)

فرض کن توی برنامت یه lable
داری که کاربر می خواد رنگشو ویا اندازش ویا ... رو با resx. تغییر بده
روش تغییر رنگ:
داخل resx. یه key/value برای رنگ لیبلم درست می کنم (که می شه از بیرون برنامه تغییر دادش چون این فایل ها به فرمت XML هستنند ) مثلا key= lablecolor و value=هرچی بخوای (البته رنگ هایی که خود برنامه میشناسه مثل Color.Yellow )

حالا تو برنامم با key مقدارشو از resx. بدست می یارم. حالا که مقدار رو دارم می تونم به Color تبدیل کنم مثال :

mylable.Color= Color.FromName(my value);//my value
my value = هر رنگی که کاربر توی resx. برای key مربوط به رنگ لیبل ذخیره کرده

برای بقیه ی property های lable یا property هر چیز دیگه که می خوای عوض کنی می تونی از این روش استفاده کنی (به شرط این که بشه value رو به property تبدیل کنی)

علیرضا حسن زاده
پنج شنبه 29 بهمن 1388, 23:47 عصر
دوست عزيز geek1982 من نمي خوام يه فايل resource را ايجاد كنم يا تغيير بدم

من مي خوام به كاربر اين اجازه را بدم كه فونت و اندازه و رنگ و... كنترل هاي برنامه رو خودش تغيير بده و ذخيره كنه و دفعه بعد با خصوصيات ذخيره شده باز شه اگه بخوام با فايل اين كار را بكنم سرعت برنامه مياد پايين . من مي خوام form.resx رو تغيير بدم آيا امكانش هست
دوست عزیز تا جایی که من می دونم فایلی با پسوند resx بعد از کامپایل برنامه وجود نداره شما بعد از کامپایل چطوری می خوای به اون فایل دسترسی داشته باشی؟
برای اینکه تغییرات انجام شده توسط کاربر تو برنامه برای اجرا های بعدی هم انجام بشه دو روش کلی وجود داره:
1- استفاده از رجیستری ویندوز که تمام خصوصیات قابل تغییر توسط کاربر رو به صورت یک Key تو رجیستری ذخیره می کنی و وقتی برنامه اجرا میشه در صورت وجود اون keyها خصوصیات رو با اونها ست میکنه
2- استفاده از فایل: تو این روش می تونید از انواع فرمت های فایل برای برنامه استفاده کنید یه روش برای این کار اینه که ار فایل تنظیمات برنامه که تو پوشه فایل کامپایل شده برنامه هست استفاده کنی و تمام تنظمات کاربر رو توش ذخیره کنی فرمت این فایل XML هست و از طریق کلاس های موجود تو دات نت می تونی تغییرات رو تو اون فایل ذخیره کنی نام این فایل همنام فایل اجرایی پروژه هست با پسوند Config. یه روش دیگه هم استفاده از فایل های ini هست که تو Win32 توابع API مخصوص برای کار با این فایل ها وجود داره فکر کنم تو دات نت هم دیدم البه اگه نباشه هم پیاده سازی اونها کار مشکلی نیست. روشی دیگه هم تو برنامه این هست که یه فایل با فرمت دلخواه خودتون تهیه کنید و یه کلاس براش درست کنید و تغییرات رو توسط اون ذخیره/بازیابی کنید که این روش رو توصیه نمی کنم چون لقمه رو دور سر چرخوندن حساب میشه:گیج:
در ضمن چرا سرعت برنامه با استفاده از فایل میاد پایین؟ می تونید بگید از چهع روشی برای دستیابی به فایل و ست کردن تنظیمات استفاده می کنید؟ من یه فرم با حدود 200 کنترل دارم که 150 تاشون با هر کلیک یا عملیات کاربر باید تغییر پیدا کنه ولی مشکلی نداره و خیلی از خصوصیا تشون مثل رنگ و فونت شون تغییر میکنه ولی مشکل سرعت ندارم!؟ البته الگوریتمی که برای این کار استفاده میکنید می تونه تو سرعت تاثیر داشته باشه

r00tkit
جمعه 30 بهمن 1388, 01:05 صبح
سلام دوست من: اگه build action فایل Embedded Resource باشه (default همین جوریه) برنامه قبل کامپایل شدن resgen.exe رو اجرا می کنه و فایل رو به .resource تبدیل می کنه و بعد .resource تو اسمبلی Embedded می شه پس بنا به گفته ی شما ما resx. رو نداریم اما اگه بخوایمEmbedded نشه مقدار build action رو نغییر می دیم


برای این که یه نسخه از فایل رو داشته باشیم می تونیم از properties فایل خاصیت
Copy to output Directory رو به Copy always تغییر بدیم با این کار یه نسخه از فایل به کنار برنامه اضافه می شه

اگه نمی شد runtime از resx. استفاده کرد پس چرا System.Resources وجود داره

توی لینک های بالا از resx. استفاده شده:wink