PDA

View Full Version : مبتدی: ذخیره تغییرات



hadi vafaii
یک شنبه 05 مرداد 1393, 21:41 عصر
سلام یه فرمی دارم که میخوام وقتی کاربر مثلا پس زمینه یا فونت یا اسکین فرم رو تغییر داد و از برنامه خارج شد این تغییرات ذخیره بشه و دفعه بعدم با همین تغییرات بیاد بالا و اگه مثلا رو دکمه دیفالت کلیک کرد برگرده به حالت اولی که داشت اگه میشه کمکم کنین

omid nasri
یک شنبه 05 مرداد 1393, 22:20 عصر
شما می تونی از قسمت Properties در solustion به قسمت settings بری و اونجا متغییر های خودت رو تعریف کنی و مقدار اولیه رو تعیین کنی؛ حالا کنار همون پروژه یک فایل هست Config شد پروژه هست، با فایل تکست باز میشه، از اون فایل یک کپی بگیر و یک جای دیگه ذخبره کن، تو برنامه بزار کاربر برنامه رو مدیریت کنه و زمانی که خواست ریست کنه شما بیا فایل کانفیگ رو حذف کن و اون کپی شده رو جای اولی قرار بده به همین راحتی. برای کار با Setting سرچ کنی پروژه فرامون هست برای درک بهتر هم خواستی بهم پخ بده برات اماده کنم یک پروژه .
id : omid8nasri@yahoo.com

hadi vafaii
یک شنبه 05 مرداد 1393, 22:55 عصر
شما می تونی از قسمت Properties در solustion به قسمت settings بری و اونجا متغییر های خودت رو تعریف کنی و مقدار اولیه رو تعیین کنی؛ حالا کنار همون پروژه یک فایل هست Config شد پروژه هست، با فایل تکست باز میشه، از اون فایل یک کپی بگیر و یک جای دیگه ذخبره کن، تو برنامه بزار کاربر برنامه رو مدیریت کنه و زمانی که خواست ریست کنه شما بیا فایل کانفیگ رو حذف کن و اون کپی شده رو جای اولی قرار بده به همین راحتی. برای کار با Setting سرچ کنی پروژه فرامون هست برای درک بهتر هم خواستی بهم پخ بده برات اماده کنم یک پروژه .
id : omid8nasri@yahoo.com

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

omid nasri
یک شنبه 05 مرداد 1393, 23:56 عصر
نیم ساعت دیگه همین قسمت می گذارم.

omid nasri
دوشنبه 06 مرداد 1393, 00:46 صبح
دوستت گرامی این یک نمونه خیلی ساده هستش:

دکمه اول نام برنامه رو عوض میکنه
دوکمه دوم رنگ پیش زمینه رو
دوکمه سوم تنظیمات رو در یک درایو ذخیره می کنه
دوکمه اخر تنظیمات رو بر حسب اون اطلاعات ذخیره شده در اون درایو باز گردانی می کنه
شما می تونی از این روش الگو بگیری و خودت اوناع دیگری رو طراحی کنی. مشکلی بود بهم پخ بزن


omid8nasri@yahoo.com

hadi vafaii
دوشنبه 06 مرداد 1393, 01:54 صبح
آقای ناصری دستتون درد نکنه که زحمت کشیدین و این رو واسم آماده کردین اما شرمنده ها فرم من ویندوز اپلیکیشنه نه وب میخوام کاربر اونجوری که میخواد بک گراند و فونت و .............. رو انوجور که میخواد تغییر بده و هر موقع خواست فرم رو اجرا کنه با همون تغییرات اجرا بشه

hadi vafaii
دوشنبه 06 مرداد 1393, 02:55 صبح
از دوستان کسی نبود کمک کنه:افسرده:

abbas.oveissi
دوشنبه 06 مرداد 1393, 03:32 صبح
از دوستان کسی نبود کمک کنه:افسرده:
اطلاعات را در Setting برنامه ذخیره کنید. هربار هم برای نمایش،اطلاعات را از اونجا بخونید و تغییراتی که نیاز هست برای نمایش فرم انجام دهید .

لینک مقاله ی #Using Settings in C در سایت MSDN :
http://msdn.microsoft.com/en-us/library/aa730869(v=vs.80).aspx

hadi vafaii
دوشنبه 06 مرداد 1393, 04:03 صبح
اطلاعات را در Setting برنامه ذخیره کنید. هربار هم برای نمایش،اطلاعات را از اونجا بخونید و تغییراتی که نیاز هست برای نمایش فرم انجام دهید .

لینک مقاله ی #Using Settings in C در سایت MSDN :
http://msdn.microsoft.com/en-us/library/aa730869(v=vs.80).aspx

مرسی از لینکتون اما ما که سواد انگیلیش نداریم:لبخند: یه مقاله یا لینک فارسی زبان نداری که لطف کنی:لبخندساده:

abbas.oveissi
دوشنبه 06 مرداد 1393, 04:21 صبح
مرسی از لینکتون اما ما که سواد انگیلیش نداریم:لبخند: یه مقاله یا لینک فارسی زبان نداری که لطف کنی:لبخندساده:

نه متاسفانه :لبخند: ولی خلاصه اش این هست،روی پروژه کلیک راست کنید و Properties را انتخاب کنید.بعد به تب Settings بروید.اینجا میتونید Settings هایی که نیاز دارید اضافه کنید.برای مثال من میخوام Background Color فرم را ذخیره کنم تا کاربر بتونه هر رنگی دوست داره برای فرمش انتخاب بکنه .
برای همین یک Setting با مشخصات زیر درست میکنم :
نام : backgroundColor ( البته هر اسمی بخواین میشه گذاشت )
نوع : System.Drawing.Color
حوزه : User ( اگر این مقدار رو برابر Application بذارید دیگه نمیتونید در حال اجرای برنامه،مقدارشو عوض کنید )
مقدار : Red
حالا در رخ داد Shown فرم این کد رو قرار میدهم :
private void Form1_Shown(object sender, EventArgs e)
{
this.BackColor = Properties.Settings.Default.backgroundColor; ;
}

برای عوض کردن تنظیمات هم میتونید یک کلید روی فرم قرار دهید و از دستور زیر استفاده کنید :
private void btnTest_Click(object sender, EventArgs e)
{
Properties.Settings.Default.backgroundColor = Color.Blue;
Properties.Settings.Default.Save();
}

hadi vafaii
دوشنبه 06 مرداد 1393, 12:54 عصر
دوستت گرامی این یک نمونه خیلی ساده هستش:

دکمه اول نام برنامه رو عوض میکنه
دوکمه دوم رنگ پیش زمینه رو
دوکمه سوم تنظیمات رو در یک درایو ذخیره می کنه
دوکمه اخر تنظیمات رو بر حسب اون اطلاعات ذخیره شده در اون درایو باز گردانی می کنه
شما می تونی از این روش الگو بگیری و خودت اوناع دیگری رو طراحی کنی. مشکلی بود بهم پخ بزن


omid8nasri@yahoo.com


کس دیگه هیچ مثال دیگه ای نداره فرم من ویندوز اپلیکیشنه

s.karim
دوشنبه 06 مرداد 1393, 13:18 عصر
یه فایل Text کنار برنامه بزارین که یه سری مشخصات رو مثل تصویر پس زمینه و رنگ و فونت و غیره رو تو خودش ذخیره می کنه
و هر بار که برنامه می خواد اجرا بشه اول میره این تنظیمات رو از اون فایل text میخونه و بعد اونا رو واسه اون کاربر لود میکنه
خوبیه این کار اینه که هر تنظیمات برای هر کاربر منحصر به خودش خواهد بود

hadi vafaii
دوشنبه 06 مرداد 1393, 13:47 عصر
سلام میشه یه نمونه بذارین لطفا
:لبخندساده:

hadi vafaii
دوشنبه 06 مرداد 1393, 14:12 عصر
کسی نبود یه نمونه بذاره:افسرده:

s.karim
دوشنبه 06 مرداد 1393, 14:12 عصر
اول یه فایل text با نام Source.txt درون شاخه ی خروجی برنامه درست کن و سپس:
مثلا برای ذخیره ی فونت:


public partial class Form1 : Form
{

string file;
string[] lines;


public Form1()
{
InitializeComponent();

file = Application.StartupPath + "\\Source.txt";

lines = System.IO.File.ReadAllLines(file);

lines[0] = "B Sina; 14.25pt; style=Bold, Italic";
}




//read font from file

private void Form1_Load(object sender, EventArgs e)
{

if (System.IO.File.Exists(Application.StartupPath + "\\Source.txt"))
{
string file = Application.StartupPath + "\\Source.txt";

string[] lines = System.IO.File.ReadAllLines(file);

string font = lines[0];

FontConverter cvt = new FontConverter();

Font f;

f = (Font)cvt.ConvertFromString(font);

this.Font = f;
}
}




//save selected font in file

private void btnChange_Click(object sender, EventArgs e)
{
FontDialog fd = new FontDialog();

string file = Application.StartupPath + "\\Source.txt";

string[] lines = System.IO.File.ReadAllLines(file);


if (fd.ShowDialog() == DialogResult.OK)
{
this.Font = fd.Font;

if (fd.Font != null)
{
string s = string.Format("{0}; {1}pt; style={2}", fd.Font.Name.ToString(), fd.Font.Size.ToString(), fd.Font.Style.ToString());

lines[0] = s;

System.IO.File.WriteAllLines(file, lines);

}

}
}

}

Abbas Naghdi
دوشنبه 06 مرداد 1393, 14:36 عصر
من واقعا متوجه نمیشم که چرا دوستان این راه ها رو انتخاب کردند
راه اول وقتی نرم افزار آپدیت بشه یا تغییر کنه کلا تنظیمات میپره
راه دوم هم که حرفه ای نیست و بچه بازیه ... حداقل به جای فایل txt میگفتین فایل ini ....
بهترین راه و حرفه ای ترین راه استفاده از ریجستری هست که نرم افزار های برتر دنیا دارن ازش استفاده میکنند ... اصلا برای همین کار ساخته شده ... با یه خط کد میتونی هر کاری داخل ریجستری بکنی ...



RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Cyrus", true);

key.GetValue("UpdateSeverInstall");
key.SetValue("UpdateSeverInstall", "www.site.com");

hadi vafaii
دوشنبه 06 مرداد 1393, 15:02 عصر
اول یه فایل text با نام Source.txt درون شاخه ی خروجی برنامه درست کن و سپس:
مثلا برای ذخیره ی فونت:


public partial class Form1 : Form
{

string file;
string[] lines;


public Form1()
{
InitializeComponent();

file = Application.StartupPath + "\\Source.txt";

lines = System.IO.File.ReadAllLines(file);

lines[0] = "B Sina; 14.25pt; style=Bold, Italic";
}




//read font from file

private void Form1_Load(object sender, EventArgs e)
{

if (System.IO.File.Exists(Application.StartupPath + "\\Source.txt"))
{
string file = Application.StartupPath + "\\Source.txt";

string[] lines = System.IO.File.ReadAllLines(file);

string font = lines[0];

FontConverter cvt = new FontConverter();

Font f;

f = (Font)cvt.ConvertFromString(font);

this.Font = f;
}
}




//save selected font in file

private void btnChange_Click(object sender, EventArgs e)
{
FontDialog fd = new FontDialog();

string file = Application.StartupPath + "\\Source.txt";

string[] lines = System.IO.File.ReadAllLines(file);


if (fd.ShowDialog() == DialogResult.OK)
{
this.Font = fd.Font;

if (fd.Font != null)
{
string s = string.Format("{0}; {1}pt; style={2}", fd.Font.Name.ToString(), fd.Font.Size.ToString(), fd.Font.Style.ToString());

lines[0] = s;

System.IO.File.WriteAllLines(file, lines);

}

}
}

}



مرسی همشهری:بوس: حالا برم ببینم کار میکنه اینجوری:لبخندساده:

abbas.oveissi
دوشنبه 06 مرداد 1393, 20:50 عصر
کسی نبود یه نمونه بذاره:افسرده:

براتون که کد نمونه گذاشتم :لبخند: همون سه خط کد بیشتر نبود که براتون گذاشتم.
این روش ، روش اصلی هست که خود مایکروسافت میگه برای ذخیره preference های کاربر استفاده کنید.

hadi vafaii
دوشنبه 06 مرداد 1393, 21:11 عصر
دستتون درد نکنه استاد آشتیانی یه راه بهتر گفتن تقریبا حل شده فقط یه مشکل مونده که اونم اینه که تابعی که بتونه عکس رو هم سیو کنه رو نمیتونم پیداش کنم استاد گفتن که از طریق ستینگ و یه سری کد که دادن حل کردم اما دیگه روم نشد بپرسم که عکس رو چه جوری بیارم:لبخند:

امیر مهرشاد
دوشنبه 06 مرداد 1393, 21:41 عصر
[QUOTE=Abbas Naghdi;2071186]من واقعا متوجه نمیشم که چرا دوستان این راه ها رو انتخاب کردند
راه اول وقتی نرم افزار آپدیت بشه یا تغییر کنه کلا تنظیمات میپره
راه دوم هم که حرفه ای نیست و بچه بازیه ... حداقل به جای فایل txt میگفتین فایل ini ....
بهترین راه و حرفه ای ترین راه استفاده از ریجستری هست که نرم افزار های برتر دنیا دارن ازش استفاده میکنند ... اصلا برای همین کار ساخته شده ... با یه خط کد میتونی هر کاری داخل ریجستری بکنی ...

این روش کاملا حرفه ای . اصولیه اینجوری هر شخصی نمیتونه با 1 ثانیه تغیرات توی فایل TXT کل برنامتونو بهم بریزه از یه برنامه نویس این چیزا بعیده