C# AlertControl不';不显示

C# AlertControl不';不显示,c#,winforms,devexpress,C#,Winforms,Devexpress,我的控制有一个奇怪的问题。我使用此代码创建了一个alertu AlertInfo alertInfo = new AlertInfo(caption, text); AlertControl control = new AlertControl(); control.FormLocation = AlertFormLocation.BottomRight; control.Show(null,alertInfo); 此代码位于backgroundWorker_DoWo

我的控制有一个奇怪的问题。我使用此代码创建了一个alertu

 AlertInfo alertInfo = new AlertInfo(caption, text);
    AlertControl control = new AlertControl();
    control.FormLocation = AlertFormLocation.BottomRight;
    control.Show(null,alertInfo);
此代码位于backgroundWorker_DoWork函数中,它应该随时显示警报。问题是没有显示警报。我可以看到show方法被调用了,但是没有显示警报。 根据文档,我将null作为Show函数的参数传递,通知应该显示在主监视器上。
我该怎么做才能使其正常工作?

我不知道有关devexpress控件的任何信息,但您可能必须通过invoke methode显示来自主线程的警报?

您的警报控件需要一个父控件

AlertControl control = new AlertControl();
control.FormLocation = AlertFormLocation.BottomRight;
control.Show(MyForm,alertInfo); //replace null with a Form/Control instance

使用null参数调用Show方法-如果您使用的是worker,那么应该使用表单/控件的实例,我想这是线程问题。尝试将代码包装到
操作
对象中:

Action action = () =>
{
    AlertControl control = new AlertControl();
    control.FormLocation = AlertFormLocation.BottomRight;
    control.Show(this, alertInfo); // "this" being a Form
};

this.Invoke(action);
我在表单中使用了一个类似的代码,效果很好,并且曾经使用
AlertControl
执行过类似的代码

using DevExpress.XtraBars.Alerter;

// Create a regular custom button.
AlertButton btn1 = new AlertButton(Image.FromFile(@"c:\folder-16x16.png"));
btn1.Hint = "Open file";
btn1.Name = "buttonOpen";
// Create a check custom button.
AlertButton btn2 = new AlertButton(Image.FromFile(@"c:\clock-16x16.png"));
btn2.Style = AlertButtonStyle.CheckButton;
btn2.Down = true;
btn2.Hint = "Alert On";
btn2.Name = "buttonAlert";
// Add buttons to the AlertControl and subscribe to the events to process button clicks
alertControl1.Buttons.Add(btn1);
alertControl1.Buttons.Add(btn2);
alertControl1.ButtonClick += new AlertButtonClickEventHandler(alertControl1_ButtonClick);
alertControl1.ButtonDownChanged += 
    new AlertButtonDownChangedEventHandler(alertControl1_ButtonDownChanged);

// Show a sample alert window.
AlertInfo info = new AlertInfo("New Window", "Text");
alertControl1.Show(this, info);

void alertControl1_ButtonDownChanged(object sender, 
AlertButtonDownChangedEventArgs e) {
    if (e.ButtonName == "buttonOpen") {
        //...
    }
}

void alertControl1_ButtonClick(object sender, AlertButtonClickEventArgs e) {
    if (e.ButtonName == "buttonAlert") {
        //...
    }
}

ref:

我不能使用invoke方法,因为我没有从窗体中显示它-我从中调用它的类不是控件或窗体您不能从后台线程使用可视控件。“这是行不通的。”柏拉图,那么我怎样才能实现我的目标呢?有什么想法吗?应该有个表格。如果您的应用程序是WindowsForms应用程序,并且确实是,那么其中应该有主窗体。