PDA

View Full Version : سوال: عوض کردن رنگ فرم و save آن



شرلوک هلمز
چهارشنبه 25 اسفند 1389, 17:41 عصر
من میخواهم کاربر بتواند رنگ فرم را عوض کند و رنگ جدید save شود . برای اینکار من رنگی را که کاربر در
ColorDialog انتخاب میکند در یک فایل متنی ذخیره کردم و آن فایل را هر زمان که فرم باز میشود میخوانم اما در این

حالت یک رشته برگردانده میشود که وقتی آنرا برابر با BackColor فرم قرار میدهم ایراد گرفته میشود زیرا BackColor شی
از نوع color را به عنوان پارامتر قبول میکند.
اگر کسی راهنمایی کند این آخر سالی کلی دعایش میکنم.

ahrimaneahurai
چهارشنبه 25 اسفند 1389, 18:22 عصر
از setting استفاده کن
می تونی نوع فیلدتم رنگ انتخاب کنی

شرلوک هلمز
چهارشنبه 25 اسفند 1389, 19:46 عصر
میشه بیشتر توضیح بدید . من حرفه ای نیشتم داداش

شرلوک هلمز
پنج شنبه 26 اسفند 1389, 22:49 عصر
من میخواهم کاربر بتواند رنگ فرم را عوض کند و رنگ جدید save شود . برای اینکار من رنگی را که کاربر در

ColorDialog انتخاب میکند در یک فایل متنی ذخیره کردم و آن فایل را هر زمان که فرم باز میشود میخوانم اما در این

حالت یک رشته برگردانده میشود که وقتی آنرا برابر با BackColor فرم قرار میدهم ایراد گرفته میشود زیرا BackColor شی
از نوع color را به عنوان پارامتر قبول میکند.


اگر کسی راهنمایی کند این آخر سالی کلی دعایش میکنم.


لطفا یکی از اساتید راهنمایی کنه !!!!!!!!

sabloger
جمعه 27 اسفند 1389, 01:43 صبح
سلام دوست عزیز
میشه توی رجیستری ادش کنی!!
بعد توی اجراهای بعدی اونو بخونی

برای دگمه تغییر رنگ:
private void button1_Click(object sender, EventArgs e)
{
BackColor = Color.Aqua;
Microsoft.Win32.Registry.CurrentUser.CreateSubKey("myprogram").SetValue("Backcolor", BackColor.Name);
}


و برای فورم لود:

private void Form1_Load(object sender, EventArgs e)
{
BackColor = Color.FromName(Microsoft.Win32.Registry.CurrentUse r.OpenSubKey("myprogram").GetValue("Backcolor").ToString());
}


البته میتونی از این روش برای خوندن رنگ از فایل هم استفاده کنی، اما این روش هم بهتره و هم حرفه ای!! تر

امیدوارم که بدردت بخوره

sabloger
جمعه 27 اسفند 1389, 01:45 صبح
راستی اگه میخوای کاربرت از هر یوزری که وارد شد این اتفاق بیوفته و همون رنگ بیاد باید توی
microsoft.win32.users.creatsubkey.....
باید این کارو بکنی

Hossenbor
جمعه 27 اسفند 1389, 11:12 صبح
سلام دوست من ببین خاصیت بک کالر متدی به نام name داره این متد از نوع رشته است

شرلوک هلمز
شنبه 28 اسفند 1389, 11:51 صبح
ممنون از راهنمایی ها روش reg برای من خیلی جالب بود .
ولی هنوز یک مشکل باقی است چون هنگامیکه کاربر رنگی را انتخاب میکند آن رنگ ممکن است از نوع Argb باشد پس نمی توان با آن مانند یک رشته رفتار کرد اما میتوان نام آن را گرفت که بصورت هگز است مثلا ff80ff00 و آنرا ذخیره کرد اما من نمیدانم که این هگز بدست آمده را چطور به backcolor نسبت بده ام .
یک راه دیگر این است که colorDialog فقط رنگهای سیستمی را نمایش بدهد که همه دارای نام مشخص هستند .
من کد زیر را نوشته ام که هنگامیکه رنگ انتخاب شده نام داشته باشد درست کار میکند اما اگر بصورت argb باشد error میدهد.
اگر کسی دراین دو مورد راهنمایی کند ممنون میشوم– شکرا یا اخی !!!!!!


TextWriter FileWrite = new StreamWriter("d:\\a.txt");
ColorDialog objColor = new ColorDialog();

if (objColor.ShowDialog() == DialogResult.OK)
{
MessageBox.Show(objColor.Color.Name);
FileWrite.WriteLine(objColor.Color.Name);
}
FileWrite.Close();

TextReader FileRead = new StreamReader("d:\\a.txt");
string a = FileRead.ReadLine();
MessageBox.Show(a);

this.BackColor = Color.FromName(a);
FileRead.Close();

ehsanara
شنبه 28 اسفند 1389, 13:02 عصر
رنگ رو به Argb ذخیره کن

colorDialog1.Color.ToArgb()


یه مقدار Integer میده بهت که میتونی ذخیره کنی
برا فراخوانی هم

Color.FromArgb(IntValue);

که به جای IntValue مقدار Int رو میزاری

شرلوک هلمز
شنبه 28 اسفند 1389, 13:27 عصر
رنگ رو به Argb ذخیره کن

colorDialog1.Color.ToArgb()


یه مقدار Integer میده بهت که میتونی ذخیره کنی
برا فراخوانی هم

Color.FromArgb(IntValue);

که به جای IntValue مقدار Int رو میزاری

دست درد نکنه درست شد .از توجه همه سپاسگزاری میکنم ....... سپاس تیمسار!!!
امیدوارم سال خوبی داشته باشید.