سلام
1) پیشنهاد می کنم ،به جای در دسترس گذاشتن کل شی Button درون UserControl،فقط خاصیت هایی که لازم داریم را Public کنید (این با اصول برنامه نویسی OO هماهنگ تر است).برای نمونه خصوصیت ButtonText را معرفی و با آن Button.Text را مقدار دهی کنید.
2) برای رفع مشکل فعلی شما کافیست صفت DesignerSerializationVisibility از property Button را برابر Content قرار دهیم.به عبارت دیگر خط زیر را قبل از خصوصیت مذکور بیافزایید:
[DesignerSerializationVisibility(DesignerSerializat ionVisibility.Content)]
در واقع کد شما در فایل UserControl.CS به شکل زیر در خواهد آمد:
public UserControl1()
{
InitializeComponent();
}
[DesignerSerializationVisibility(DesignerSerializat ionVisibility.Content)]
public Button Button
{
get { return button1; }
set { button1 = value; }
}
با تنظیم این صفت،به Designer رسما اعلام می کنید که تغییرات انجام شده در این property را به هر شکل که لازم است، ذخیره کند (در InitComponent).امیدوارم اگر اشتباهی در رساندن منظور (یا کژ فهمی من) در رابطه با این صفت است،دوستان یادآوری کنند.
موفق باشید