これを行うことは可能ですが、ユーザー コントロールにアクセスさせてフォームを操作させるのは、最もクリーンな方法ではありません。ユーザー コントロールにイベントを発生させ、ホスト フォームにイベントを処理させる方がよいでしょう。(例えば、ボタンのクリックを処理する際に、フォームはタイマーを有効/無効にすることができます)
そうすれば、必要に応じて、さまざまなフォームに対してさまざまな方法でユーザー コントロールを使用できます。何が起こっているのかがより明確になります。
更新: ユーザー コントロール内で、イベントを宣言できます。ボタンのクリックで、イベントを発生させます。
namespace WindowsFormsApplication1
{
public partial class UserControl1 : UserControl
{
public event EventHandler OnButtonClicked;
public UserControl1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
EventHandler handler = OnButtonClicked;
// if something is listening for this event, let let them know it has occurred
if (handler != null)
{
handler(this, new EventArgs());
}
}
}
}
次に、フォーム内にユーザー コントロールを追加します。その後、イベントにフックできます。
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
userControl11.OnButtonClicked += userControl11_OnButtonClicked;
}
void userControl11_OnButtonClicked(object sender, EventArgs e)
{
MessageBox.Show("got here");
}
}
}