AlertControl не показывает - PullRequest
       0

AlertControl не показывает

3 голосов
/ 09 сентября 2011

У меня странная проблема с devexpress AlertControl. Я создаю алерту, используя этот код

 AlertInfo alertInfo = new AlertInfo(caption, text);
    AlertControl control = new AlertControl();
    control.FormLocation = AlertFormLocation.BottomRight;
    control.Show(null,alertInfo);

этот код помещается в функцию backgroundWorker_DoWork, и он должен время от времени отображать предупреждения. Проблема в том, что предупреждения не отображаются. Я вижу, что вызывается метод show, однако предупреждения не отображаются. Согласно документации, в качестве параметра функции Show я передаю null, уведомление должно отображаться на главном мониторе. Что я могу сделать, чтобы это работало?

Ответы [ 4 ]

3 голосов
/ 14 июня 2013

Учитывая, что вы используете рабочий, я думаю, это проблема с потоками.Попробуйте обернуть ваш код в Action объект:

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

this.Invoke(action);

Я использую подобный код внутри формы с хорошими результатами и однажды сделал похожий код, используя AlertControl тоже.

1 голос
/ 15 октября 2012

Ваш AlertControl нуждается в родительском контроле.

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

Вы вызываете метод Show с нулевым параметром - где вы должны использовать экземпляр Form / Control

0 голосов
/ 04 апреля 2016
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") {
        //...
    }
}

ссылка: https://documentation.devexpress.com/#WindowsForms/clsDevExpressXtraBarsAlerterAlertControltopic

0 голосов
/ 09 сентября 2011

Не знаете ничего о элементах управления devexpress, но, возможно, вам нужно показать предупреждение из основного потока с помощью метода invoke?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...