سلام.می خوام یه متد درست کنم که پراپرتی باتن رو تغییر بده.پارامتر ورودی هم نام باتن از نوع استرینگ.چجوری با نام از از نوع استرینگ میشه پراپرتی اون باتن رو تغییر داد؟
سلام.می خوام یه متد درست کنم که پراپرتی باتن رو تغییر بده.پارامتر ورودی هم نام باتن از نوع استرینگ.چجوری با نام از از نوع استرینگ میشه پراپرتی اون باتن رو تغییر داد؟
کدش رو پیدا کردم
string ctrlName = "btnTest";
this.Controls[ctrlName].Enabled =false;
مشکلی که این کد داره این که اگه کنترل تو یه گروپ باکس یا پنل باشه یا اینکه باتن به صورت منو باشه دیگه نمیشه از this استفاده کرد و باید نام اون فرضا گروپ باکس رو استفاده کنیم.کسی راه دیگه ای به ذهنش میرسه؟
از متد Find استفاده کنید.خروجی آرایه هست چون ممکنه بیش از یک Control پیدا بشه.
Control[] controls = this.Controls.Find(ctrlName, true);
سلام
با یه متد بازگشتی که تمام کنترل هارو، چه داخل گروپباکس و چه داخل هر چیزه دیگه ای بررسی کن و مثلاً:
foreach(Control ali in this.controls)
{
if(ali.name = "btnAli")
{
ali.Enabled = false;
}
}
حالا اون foreach باید بازگشتی باشه.
توی همین سایت نمونه کد پیدا کردن کنترل داخل هر کنترل دیگه ای هست.
این تابعش هست:
private void ChangeControls(Control c)
{
foreach (Control c in c.Controls)
{
if (c.Name == "btnAli")
{
// کارهای مورد نظر
}
}
}
این کدها هم توی جایی که می خوای ازش استفاده کنید می نویسید. مثلاً توی رویداد کلیک دکمه یا هرجایی که نیازه:
foreach (Control c in this.Controls)
{
if (c.Name == "btnAli")
{
// کارهای مورد نظر
}
ChangeControls(c);
}
برای بقیه کنترلها کار کرد؟
من خودم همیشه از این استفاده می کنم و مشکلی تا حالا پیدا نکردم.
شرمنده. دیگه نمی دونم.
ببین اینا می شه:
اینو بر اساس نیازت تغییر بده.
foreach (GridViewRow row in gv.Rows)
{
string basicrate =row.FinControl("lblBasicRate") as Label).Text;;
}
اینم که همون بازگشتیه هستش: شما خودت باز داخلش بر اساس تو در تویی foreach بذاری ببین می شه.
foreach (Control c in Page.Controls)
{
foreach (Control childc in c.Controls)
{
if (childc is TextBox)
{
allTextBoxValues += ((TextBox)childc).Text + ",";
}
}
}
سلام.
با استفاده از reflection می تونید هر مقدار از هر عضوی رو فقط با داشتن نامش (به صورت string) تغیر بدید.
به این صورت:
ChangeFieldValue("button1", "BackColor", (object)Color.Black);
//...
//..
void ChangeFieldValue(string memberName, string propertyName,Object value)
{
var member = this.GetType().GetField(memberName, System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static|System.Refle ction.BindingFlags.IgnoreCase );
setPropertyValue(member.GetValue(this), propertyName, value);
}
void setPropertyValue(object objInstance, string propertyName, object value)
{
var property = objInstance.GetType().GetProperty(propertyName, System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.IgnoreCase);
property.SetValue(objInstance , value, null);
}
چشم ظاهر گر نبیند عیب نیست چشم دل گر ننگرد باید گریست**********اَلسَّلامُ عَلَى الْحُسَيْنِ وَ عَلى عَلِىِّ بْنِ الْحُسَيْنِ وَ عَلى اَوْلادِ الْحُسَيْنِ وَ عَلى اَصْحابِ الْحُسَيْنِ