PDA

View Full Version : سوال در مورد app.config و Settings.Settings



mohsen_metn
چهارشنبه 27 بهمن 1389, 11:31 صبح
سلام
اول بگم خیلی جستجو کردم ولی جواب سوالاتم رو پیدا نکردم

1- من مجبورم در بعضی مواقع اطلاعات موجود در app.config و Settings.Settings را در زمان اجرای برنامه عوض کنم.
مثل کانکشن استرینگ و ...
این کار رو باید به چه صورت انجام بدهم

mohsen_metn
چهارشنبه 27 بهمن 1389, 12:35 عصر
لطفا کمک کنید

hamid67fathi
چهارشنبه 27 بهمن 1389, 14:42 عصر
سلام
دوست عزيز اگه بيشتر توضيح بديد حتماً ميتونيم کمک کنيم.
يک راه استفاده از ديرکتيو هاست ، لينک زير توضيح کاملی در اين موضوع داره.
http://msdn.microsoft.com/en-us/library/yt3yck0x(v=VS.71).aspx

البته تغيير در کانفيگ ها از نظر برنامه نويسی منطقی و صحيح است چون يکی از فيچر های دات net هست.

 

mohsen_metn
چهارشنبه 27 بهمن 1389, 17:55 عصر
سلام
دوست عزيز اگه بيشتر توضيح بديد حتماً ميتونيم کمک کنيم.
يک راه استفاده از ديرکتيو هاست ، لينک زير توضيح کاملی در اين موضوع داره.
http://msdn.microsoft.com/en-us/library/yt3yck0x(v=VS.71).aspx

البته تغيير در کانفيگ ها از نظر برنامه نويسی منطقی و صحيح است چون يکی از فيچر های دات net هست.


 


با تشکر از راهنمایی و توجه اتان
مشکل من در رابطه با عوض کردن مقادیز یاست که در config ذخیره کرده ام مثل کانکشن استرینگ و یا مقادیر دیگری که در ان تعریف کرده ام

hamid67fathi
چهارشنبه 27 بهمن 1389, 22:44 عصر
کاری که شما انجام ميديد از نظر دات نتی صحيح هست.
به عنوان مثال اگه شما دوتا کانکشن استرينگ داريد :


constr = "value";
constr1 = "value";


با در نظر گرفتن اينکه شما در برنامه خودتون constr رو استفاده ميکنيد ، تنها با تغيير نام دو مورد بالا در فايل کانفيگ ، ميتونيد به مقصودتون برسيد.
اگر هنوز هم قانع نشد ، به توضيحاتی که در MSND در مورد داتنت و قابليت هاش داده شده مراجع کنيد.

mohsen_metn
پنج شنبه 28 بهمن 1389, 09:44 صبح
کاری که شما انجام ميديد از نظر دات نتی صحيح هست.
به عنوان مثال اگه شما دوتا کانکشن استرينگ داريد :


constr = "value";
constr1 = "value";


با در نظر گرفتن اينکه شما در برنامه خودتون constr رو استفاده ميکنيد ، تنها با تغيير نام دو مورد بالا در فايل کانفيگ ، ميتونيد به مقصودتون برسيد.



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

hamid67fathi
جمعه 29 بهمن 1389, 18:54 عصر
خوب اين که ساده تر ميکنه کار رو ، بعد از گرفتن مقادير ، آنها رو در
setting ذخيره کن.
بعد هر وقت هم لازم داشتی ازش استفاده کن.

reza2012
شنبه 30 بهمن 1389, 00:11 صبح
یه کلاس بنویس که ورودی بگیره ورودی اون نام کامپیوتر و هر چیزی که باید تغییر کنه باشه بعدش بعد از اون کلاس به عنوان دیتا اکسس استفاده کن و هر فراخوانی از بانک رو به وسیله ی اون انجام بده اینطوری مشکلت حل میشه

javad_r_85
شنبه 30 بهمن 1389, 07:59 صبح
سلام..
اولا بر اساس تجربه میگم سعی کن از Settings استفاده نکنی چون دردسر داره فکر کنم کد زیر بتونه کارت را را ه بندازه




global::WindowsFormsApplication1 .Properties .Settings s=new WindowsFormsApplication1.Properties.Settings();
MessageBox.Show (s.name) ;

s.name = "javad";
MessageBox.Show(s.name);





بعد این که اصلا چرا می خوایید کانکشن استرینگ را تغییر دهید اگر اونا درست تعریف کنید نیاز به تغییر ندارد به عنوان مثال:




SqlConnection con =new SqlConnection (@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Shop.MDF;Integrated Security=True");

vof.ir
سه شنبه 08 شهریور 1390, 00:54 صبح
سلام
امیدوارم که فهمیده باشم سوالت را و اینکه جوابم به درد بخور باشه
من میخواستم یک کلید را در فایل app.config
مقدارش تغییر بدهم
این تابع را نوشتم

public static bool SetfrmSplashScreenImagePath(string path)
{
bool result = false;
if ( path == null )
{
path = "";
}
try
{
string sPattern = @"^(([a-zA-Z]:|\\)\\)?(((\.)|(\.\.)|([^\\/:\*\?""\|<>\. ](([^\\/:\*\?""\|<>\. ])|([^\\/:\*\?""\|<>]*[^\\/:\*\?""\|<>\. ]))?))\\)*[^\\/:\*\?""\|<>\. ](([^\\/:\*\?""\|<>\. ])|([^\\/:\*\?""\|<>]*[^\\/:\*\?""\|<>\. ]))?$";
if ( Regex.IsMatch(path, sPattern) || path == "" )
{

if ( ConfigurationManager.AppSettings.AllKeys.Contains("imagepath") )
{

Configuration config = ConfigurationManager.OpenExeConfiguration(Configur ationUserLevel.None);
config.AppSettings.Settings["imagepath"].Value = path;
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}
}
result = true;
}
catch ( Exception )
{

result = false;
}


return result;

}

vof.ir
سه شنبه 08 شهریور 1390, 01:00 صبح
سلام
امیدوارم که فهمیده باشم سوالت را و اینکه جوابم به درد بخور باشه
من میخواستم یک کلید را در فایل app.config
مقدارش تغییر بدهم
این تابع را نوشتم

public static bool SetfrmSplashScreenImagePath(string path)
{
bool result = false;
if ( path == null )
{
path = "";
}
try
{
string sPattern = @"^(([a-zA-Z]:|\\)\\)?(((\.)|(\.\.)|([^\\/:\*\?""\|<>\. ](([^\\/:\*\?""\|<>\. ])|([^\\/:\*\?""\|<>]*[^\\/:\*\?""\|<>\. ]))?))\\)*[^\\/:\*\?""\|<>\. ](([^\\/:\*\?""\|<>\. ])|([^\\/:\*\?""\|<>]*[^\\/:\*\?""\|<>\. ]))?$";
if ( Regex.IsMatch(path, sPattern) || path == "" )
{

if ( ConfigurationManager.AppSettings.AllKeys.Contains("imagepath") )
{

Configuration config = ConfigurationManager.OpenExeConfiguration(Configur ationUserLevel.None);
config.AppSettings.Settings["imagepath"].Value = path;
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}
}
result = true;
}
catch ( Exception )
{

result = false;
}


return result;

}