フォームラベルから継承するユーザーコントロール、MenuItemを作成しました。ユーザーコントロールのメインフォームからプロパティを読み取るにはどうすればいいですか
私は、IsBusyプロパティがMainFormのプロパティを通じてIsBackgroundBusyとして公開されているBackgroundworkerスレッドを持っています。
MenuItem usercontrolからこのプロパティを読み取るにはどうすればよいですか?私は現在Application.UseWaitCursorを使用しています。私はそれをbackgroundworkerで設定していますが、これは完全に動作しますが、カーソルを変更したくないです。だからこそ私が設定できる財産ははるかに良いと思ったのです。ここで
私のMainFormのコードです:ここで
public partial class MainForm : Form
{
public bool IsBackgroundBusy
{
get
{
return bwRefreshGalleries.IsBusy;
}
}
は私のユーザーコントロールのコードは次のとおりです。
public partial class MenuItem: Label
{
private bool _disableIfBusy = false;
[Description("Change color if Application.UseWaitCursor is True")]
public bool DisableIfBusy
{
get
{
return _disableIfBusy;
}
set
{
_disableIfBusy = value;
}
}
public MenuItem()
{
InitializeComponent();
}
protected override void OnMouseEnter(EventArgs e)
{
if (Application.UseWaitCursor && _disableIfBusy)
{
this.BackColor = SystemColors.ControlDark;
}
else
{
this.BackColor = SystemColors.Control;
}
base.OnMouseEnter(e);
}
は、あなたの質問どのように[UserControlからのアクセスフォーム](http://stackoverflow.com/questions/14921354/access-form-from-usercontrol)の心臓部ですか? – ryanyuyu
はい、そうだと思います。私は代わりにフォームのイベントを使用できることを知っていますが、私は、コントロールを再利用する際には、多くのメニューアイテムが作成されるため、可能な限り避けたいと思っていました。 – RoadRacer524
@ryanyuyuこれは、あなたが1つのタイプのフォームにusercontrolをロックしても構いません。より複雑なのは、フォームインターフェイスを作成し、コントロールを使用するフォームにそれを継承させることです。 –