استفاده از TextBox به عنوان پارامتر در Generic
درون کلاس، لازمه پراپرتی Text از کنترلهای Label یا TextBox رو Set کنم.
میخوام به جای OverLoad کردن و نوشتن دو تابع با نامهای یکسان ، از Generic استفاده کنم
public class stuff
{
public static void SetText<T>(T t)
{
if (t is TextBox)
{
((TextBox)t).Text = "This is TextBox";
}
}
}
اما پیغام میده که Can not convert type T to TextBox :افسرده:
نقل قول: استفاده از TextBox به عنوان پارامتر در Generic
public class stuff
{
public static void BindGridView<T>(T t)
{
if (t is TextBox)
{
TextBox textBox = t as TextBox;
textBox.Text = "This is TextBox";
}
}
}
مطمئینید که این روش برای هدفتون مناسب هست؟ این یکی رو ببینید:
public class stuff
{
public static void BindGridView(Control control)
{
if (control is TextBox)
{
control.Text = "This is TextBox";
}
else if (control is Button)
{
//
}
}
}
نقل قول: استفاده از TextBox به عنوان پارامتر در Generic
قصدم یادگیری Generic بود. واسه همین سعی کردم با Generic پیاده سازی کنم.
نقل قول: استفاده از TextBox به عنوان پارامتر در Generic
سلام
کافیه از قید where استفاده کنید:
public class stuff
{
public static void SetText<T>(T t) where T: Control
{
t.Text="This is a text";
}
}
نقل قول: استفاده از TextBox به عنوان پارامتر در Generic
نقل قول:
کافیه از قید where استفاده کنید:
ممنون
برای DataGridView جواب نداد.
مثلا میخوام بگم اگه DataGridView مربوط به خود ویژوال استدیو باشه یه جور Bind کن. اگه مربوط به مجموعه Telerik باشه یه جور دیگه.
if (t is DataGridView)
{
t.Rows.Add(4);
}
راستی اگه Where رو استفاده نکنم، چطور میتونم بفهمم نوع آبجکتی که برام پاس شده چیه و اون رو استفاده کنم؟ مثلا چطور بدون استفاده از Where بفهمم DataGridView پاس شده یا مثلا TextBox ؟
نقل قول: استفاده از TextBox به عنوان پارامتر در Generic
کدهای plus و tooraj_azizi_1035 رو ترکیب کن(t رو به کنترلی که در if چک میکنید cast کنید):
public class stuff
{
public static void SetText<T>(T t) where T : Control
{
if (t is TextBox)
{
t.Text = "This is a TextBox";
}
else if (t is ListBox)
{
ListBox lb = t as ListBox;
lb.Items.Add("This is a ListBox");
}
else if (t is DataGridView)
{
DataGridView dgv = t as DataGridView;
dgv.Rows.Add("This is a DataGridView");
}
}
}