ho scritto un controllo utente, MenuItem, che eredita da un Form Label.Come faccio a leggere una proprietà dalla mia forma principale di un controllo utente
Ho un filo BackgroundWorker cui proprietà IsBusy è esposta attraverso una proprietà nel MainForm come IsBackgroundBusy.
Come posso leggere questo immobile dal UserControl MenuItem? Attualmente sto usando Application.UseWaitCursor e l'ho impostato nel backgroundworker e funziona perfettamente, tuttavia non voglio che il cursore cambi. Ecco perché ho pensato che una proprietà che avrei potuto impostare sarebbe stata molto meglio.
Ecco il codice nel mio MainForm:
public partial class MainForm : Form
{
public bool IsBackgroundBusy
{
get
{
return bwRefreshGalleries.IsBusy;
}
}
Ecco il codice per il mio UserControl:
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);
}
Il cuore della tua domanda su come [accedere al modulo da usercontrol] (http://stackoverflow.com/questions/14921354/access-form-from-usercontrol)? – ryanyuyu
Sì, suppongo di sì. So che posso utilizzare un evento nel modulo, ma volevo evitarlo, se possibile, per semplicità, quando riusciamo il controllo poiché verranno create molte voci di menu. – RoadRacer524
@ryanyuyu Che funziona fintanto che non ti interessa bloccare l'usercontrol per un tipo di modulo. Più complicato sarebbe creare un'interfaccia del modulo e avere le forme che usano il controllo ereditarlo. –