Approved
Last Updated: 29 Mar 2016 12:11 by ADMIN
Workaround: keep track of the alerts and their location

public partial class Form1 : Form
{
    private Point location;
    private Rectangle initialRect;
    private bool displaySettingsChanged;
    private RadDesktopAlert dAlert;
    private HashSet<RadDesktopAlert> alerts;

    public Form1()
    {
        InitializeComponent();

        this.initialRect = Screen.PrimaryScreen.WorkingArea;
        this.radDesktopAlert1.Popup.LocationChanged += Popup_LocationChanged;
        Microsoft.Win32.SystemEvents.DisplaySettingsChanged += SystemEvents_DisplaySettingsChanged;
    }

    private void Popup_LocationChanged(object sender, EventArgs e)
    {
        DesktopAlertPopup popup = sender as DesktopAlertPopup;
        RadDesktopAlert alert = this.alerts.Where(a => a.Popup == popup).FirstOrDefault();
        if ((alert.Popup.Location.X != this.location.X || alert.Popup.Location.Y != this.location.X) && this.displaySettingsChanged && Control.MouseButtons != MouseButtons.Left)
        {
            alert.Popup.Location = this.location;
        }
    }

    private void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e)
    {
        this.displaySettingsChanged = true;
        foreach (RadDesktopAlert alert in this.alerts)
        {
            this.AdjustPosition(alert);
        }
    }

    private void AdjustPosition(RadDesktopAlert alert)
    {
        Rectangle newRect = Screen.PrimaryScreen.WorkingArea;
        Point newLocation = DesktopAlertManager.Instance.GetAlertPopupLocation(alert);
        this.location = new Point(newLocation.X - (initialRect.Width - newRect.Width), newLocation.Y - (initialRect.Height - newRect.Height));
        alert.Popup.Location = this.location;
    }

    private void radButton1_Click(object sender, EventArgs e)
    {
        this.dAlert = new RadDesktopAlert();
        this.dAlert.PopupAnimationFrames = 1;
        this.dAlert.CanMove = false;
        this.dAlert.Show();

        if (this.alerts == null)
        {
            this.alerts = new HashSet<RadDesktopAlert>();
        }

        this.alerts.Add(this.dAlert);
        this.dAlert.Popup.LocationChanged += Popup_LocationChanged;
        if (this.displaySettingsChanged)
        {
            this.AdjustPosition(dAlert);
        }
    }
}
Approved
Last Updated: 27 Aug 2017 14:22 by mostafa
Created by: mostafa
Comments: 6
Category: DesktopAlert
Type: Bug Report
1
When the ScreenPosition property of RadDesktopAlert is set to BottomRight in RightToLeft mode, it is shown in the center instead of in the right. Please refer to the attached sample project and attached screenshots.

Workaround:

 RadDesktopAlert rdAlert = new RadDesktopAlert();

 private void radButton1_Click(object sender, EventArgs e)
 {
     rdAlert.ContentText = "Sample text";
     rdAlert.ScreenPosition = AlertScreenPosition.BottomRight;
     rdAlert.ShowOptionsButton = false;
   
     rdAlert.FixedSize = new System.Drawing.Size(490, 135);
     rdAlert.Popup.LocationChanged += Popup_LocationChanged; 
     rdAlert.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
     rdAlert.Show();
 }

 Point p = Point.Empty;

 private void Popup_LocationChanged(object sender, EventArgs e)
 {
     DesktopAlertPopup popup = sender as DesktopAlertPopup;
     if (p == Point.Empty)
     {
         p = popup.Location;
     }
     else
     { 
         rdAlert.Popup.LocationChanged -= Popup_LocationChanged;
         rdAlert.Popup.Location = p;
         rdAlert.Popup.LocationChanged += Popup_LocationChanged;
     }
 }

Approved
Last Updated: 18 Sep 2019 12:08 by ADMIN
Created by: QuizzBox
Comments: 0
Category: DesktopAlert
Type: Bug Report
1

To reproduce:

private void RadButton1_Click(object sender, EventArgs e)
{
    Telerik.WinControls.UI.RadDesktopAlert _Alert = new Telerik.WinControls.UI.RadDesktopAlert();
    _Alert.CaptionText = "TEST ALERT";
    _Alert.ContentText = "This is my test content";
    _Alert.AutoSize = true;
    //RadDirection.Up bug when the screen is scaled (for example set creen scale at 150% => alert is cut, part of the window is not visible and the direction is still down)
    //Whereas RadDirection.Down seems to work fine
    _Alert.PopupAnimationDirection = Telerik.WinControls.UI.RadDirection.Down;
    _Alert.Show();
}

Approved
Last Updated: 29 Mar 2016 12:07 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Sr.
Comments: 0
Category: DesktopAlert
Type: Bug Report
0
To reproduce: use the following code:

RadDesktopAlert desktopAlert = new Telerik.WinControls.UI.RadDesktopAlert();

public Form1()
{
    InitializeComponent(); 
    
    desktopAlert.AutoClose = false;
    RadButtonElement radButtonElement = new RadButtonElement();
    radButtonElement.Click += RadDesktopAlertOkButtonClick;
    radButtonElement.Text = "OK";
    desktopAlert.ButtonItems.Add(radButtonElement); 
    desktopAlert.PopupAnimationDirection = RadDirection.Up;
    desktopAlert.PopupAnimationEasing = Telerik.WinControls.RadEasingType.InBack;

    BackgroundWorker bw = new BackgroundWorker();
    bw.DoWork += new DoWorkEventHandler(bw_DoWork);
    bw.RunWorkerAsync();
}

private void CreateAndShowAlert(string caption, string text)
{
    desktopAlert.CaptionText = caption;
    desktopAlert.ContentText = text;

    desktopAlert.Show();
}

void RadDesktopAlertOkButtonClick(object sender, EventArgs e)
{
    desktopAlert.Hide();
}

void bw_DoWork(object sender, DoWorkEventArgs e)
{
    int i = 0;
    while (true)
    {
        Thread.Sleep(1000);
        i++;
        MethodInvoker mi = new MethodInvoker(delegate() { this.CreateAndShowAlert("Alert " + i, "This is the " + i + "th alert"); });
        this.Invoke(mi);
    }
}

When I click the OK button, the DesktopAlert hides correctly, but after a few times (10 or more) the DesktopAlert stops appearing.

Workaround:

radDesktopAlert.Hide();
radDesktopAlert.Show();

or to switch off the animation:

radDesktopAlert.PopupAnimation = false;