PDA

View Full Version : اشکال در تعریف پراپرتی



SokooteShab1
شنبه 27 اسفند 1390, 12:32 عصر
سلام
یه Component دارم که از button به ارث می بره. می خوام یه پراپرتی براش تعریف کنم که وقتی Enable باتن False شد بک گراند اون باتن یه عکس دیگه ای بگیره برای این کار از کد زیر استفاده کردم ولی کار نمی کنه.



publicclassSDButton:Button

{


privateImage nS;


publicImage NormalState { get { return nS; } set { nS = value; this.BackgroundImage = value; } }


publicImage DisableState { get; set; }


protectedoverridevoid OnEnabledChanged(EventArgs e)

{


base.OnEnabledChanged(e);


if (this.Enabled) this.BackgroundImage = NormalState;


elsethis.BackgroundImage = DisableState;

}


از اساتید محترم اگر کسی راهنماییم کنه ممنون میشم.

gwbasic
شنبه 27 اسفند 1390, 13:51 عصر
این کد رو با notepade نوشتم نمایش تصویر انجام می شه اما برحسب نیازتون باید کامل کنید

public class SDButton:Button
{
private Image normalImage;
public Image NormalImage
{
get { return normalImage; }
set
{
if (normalImage != value)
{
normalImage = value;
this.OnEnableChanged(null);
}
}
}

private Image disableState
public Image DisableState
{
get { return disableImage; }
set
{
if (disableImage != value)
{
disableImage = value;
this.OnEnableChanged(null);
}
}

protected override void OnEnabledChanged(EventArgs e)
{

base.OnEnabledChanged(e);

if (this.Enabled)
this.BackgroundImage = NormalImage;
else
this.BackgroundImage = DisableImage;
}
}

SokooteShab1
شنبه 27 اسفند 1390, 16:30 عصر
مشکل اولم حل شد،ممنون.
ولی اگر بخوام موقع Disable شدن باتن، رنگ text اون هم عوض بشه اگر از کد زیر استفاده کنم این اتفاق نمی افته و رنگ پیش فرض رو می گیره!! پس چیکار باید کرد؟




protected override void OnEnabledChanged(EventArgs e)

{


base.OnEnabledChanged(e);


if (this.Enabled)


this.BackgroundImage = NormalImage;


else

{


this.BackgroundImage = disableImage;


this.ForeColor = Color.White;

}



}

gwbasic
شنبه 27 اسفند 1390, 16:50 عصر
شما دارید رفتار طبیعی و استاندارد یک کنترل رو تغییر می دید! این کار رو پیشنهاد نمی کنم اگه می گفتید دقیقا چی می خواید شاید راه بهتری بشه پیشنهاد کرد.
اما در هر صورت باید برای این کار (تغییر رنگ متن) متد OnPaint رو بازنویسی کنید.
لازم به ذکر است که این متد هنگام نمایش کنترل در هر حالتی فراخوانی می شود بنابراین باید تمام حالات را در نظر بگیرید بنابراین نیاز به کدنویسی بیشتری هست

SokooteShab1
شنبه 27 اسفند 1390, 17:13 عصر
می خوام یه باتن درست کنم با یه بک گراند ثابت، که متن روی عکس که همون text باتن هست قابل تغییر باشه و موقع disable شدن بک گراندش عوض بشه ولی رنگ متنش ثابت بمونه.
البته یه مشکل دیگه هم دارم و اون اینه که یه فرم دارم که یکسری کنترل داره از جمله یک پنل و می خوام بقیه فرم هام از این فرم به ارث برده و بتونه به اون پنلی که گفتم کنترل های مورد نظر را اضافه کنم ولی پنل قفله. آیا چنین چیزی ممکنه؟