Skip to main content

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

WindowsFormsSettings.ForcePaintApiDiagnostics(PaintApiDiagnosticsLevel, PaintApiTraceLevelResolver) Method

Allows you to trace all outdated APIs that are not recommended for use with DirectX-rendered and Per-Monitor DPI-aware applications. Starting with version 18.2, also traces Appearance.BackColor properties modified for skinned UI elements.

Namespace: DevExpress.XtraEditors

Assembly: DevExpress.Utils.v24.2.dll

#Declaration

public static void ForcePaintApiDiagnostics(
    PaintApiDiagnosticsLevel level,
    PaintApiTraceLevelResolver resolver = null
)

#Parameters

Name Type Description
level DevExpress.Utils.Diagnostics.PaintApiDiagnosticsLevel

A enumerator value that specifies how the application responds to this inadvisable API.

#Optional Parameters

Name Type Default Description
resolver DevExpress.Utils.Diagnostics.PaintApiTraceLevelResolver null

An optional object that allows you to implement a custom trace behavior.

#Remarks

The ForcePaintApiDiagnostics method allows you to detect the following issues:

Use the Throw diagnostics level to throw exceptions whenever the unsupported/outdated code is detected.

WindowsFormsSettings.ForcePaintApiDiagnostics(PaintApiDiagnosticsLevel.Throw);

Other available diagnostics levels:

  • Trace - unsupported APIs display result in warnings, displayed in Visual Studio’s “Output” window;
WindowsFormsSettings.ForcePaintApiDiagnostics(PaintApiDiagnosticsLevel.Trace);
  • Disable - ignores unsupported API;
  • Default - acts as “Trace” if DirectX and\or Per-Monitor HiDPI support is enabled; otherwise, the same as “Disable”.

The optional “resolver” parameter allows you to implement any custom trace behavior.

WindowsFormsSettings.ForcePaintApiDiagnostics(PaintApiDiagnosticsLevel.Trace, (apiLevel, api) => {
    if(api == "ApiName") {
        Console.WriteLine(apiLevel.ToString() + "This API is not recommended: " + api);
        return PaintApiDiagnosticsLevel.Disable;
    }
    return apiLevel;
});

The code snippet below allows your app to write the method’s output to the “logfile.txt” file on the desktop.

static void Main() {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    WindowsFormsSettings.ForceDirectXPaint();
    WindowsFormsSettings.ForcePaintApiDiagnostics(DevExpress.Utils.Diagnostics.PaintApiDiagnosticsLevel.Trace, (dlevel, api) => {
        System.Text.StringBuilder msg = new System.Text.StringBuilder();
        msg.AppendLine($@"Logged by ForcePaintApiDiagnostics: incorrect\obsolete API found -- {api}");
        System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace();
        msg.AppendLine(st.ToString());
        msg.AppendLine();
        String desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
        string logFilePath = String.Format("{0}\\{1}", desktopPath, "logfile.txt");
        System.IO.File.AppendAllText(logFilePath, msg.ToString());
        return dlevel;
    });
    Application.Run(new Form2());
}

See this article for more information: Obtain an Exception’s Call Stack.

See Also