【问题标题】:Syntax editor control does not refresh UI when data source is changed更改数据源时语法编辑器控件不刷新 UI
【发布时间】:2020-07-27 13:08:12
【问题描述】:

我正在使用 RadSyntaxEditor 来实现功能,例如显示一些功能重载。但是当我需要用新的 OverloadInfoCollection 更改 overloadListWindow.Presenter.OverloadListItems 时遇到问题,UI 部分没有更改。我假设此更改不会触发 INotifyPropertyChanged,这就是 UI 未更新的原因。在某种情况下,我们像在radButton1_Click 事件处理程序中一样更改overloadListWindow.Presenter.OverloadListItems,直到我使用键盘上的箭头按钮(可能是触发INotifyPropertyChanged 事件的时间)之前没有任何更改。我试图做一些解决方法,在这种情况下我试图清除this.radSyntaxEditor1.SyntaxEditorElement.IntelliPrompts.OverloadListWindow.Presenter.OverloadListItems,但在这种情况下,即使实例不为空,我也会得到 NullReferenceException。

using System;
using System.Windows.Forms;
using Telerik.WinForms.Controls.SyntaxEditor.UI;
using Telerik.WinForms.Controls.SyntaxEditor.UI.IntelliPrompt.Overloading;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            OverloadInfoCollection overloadListA = new OverloadInfoCollection { new OverloadInfo("aaa", "aaa description") };
            this.radSyntaxEditor1.SyntaxEditorElement.IntelliPrompts.OverloadListWindow.Presenter.OverloadListItems = overloadListA;
        }

        private void btnClear_Click(object sender, EventArgs e)
        {
            this.radSyntaxEditor1.SyntaxEditorElement.IntelliPrompts.OverloadListWindow.Presenter.OverloadListItems.Clear();
        }

        private void btnChange_Click(object sender, EventArgs e)
        {
            OverloadInfoCollection overloadListB = new OverloadInfoCollection { new OverloadInfo("bbb", "bbb description") };

            OverloadListPopup overloadListWindow = this.radSyntaxEditor1.SyntaxEditorElement.IntelliPrompts.OverloadListWindow;
            overloadListWindow.Presenter.OverloadListItems = overloadListB;
            overloadListWindow.Refresh();
        }

        private void radButton1_Click(object sender, EventArgs e)
        {
            OverloadInfoCollection overloadListC = new OverloadInfoCollection { new OverloadInfo("ccc", "ccc description"), new OverloadInfo("ccc 1", "ccc 1 description") };
            this.radSyntaxEditor1.SyntaxEditorElement.IntelliPrompts.OverloadListWindow.Presenter.OverloadListItems = overloadListC;
        }

        private void radSyntaxEditor1_DocumentContentChanged(object sender, Telerik.WinForms.SyntaxEditor.Core.Text.TextContentChangedEventArgs e)
        {
            this.radSyntaxEditor1.SyntaxEditorElement.IntelliPrompts.OverloadListWindow.Show();
        }
    }
}

【问题讨论】:

    标签: c# winforms telerik


    【解决方案1】:

    尼纳德,

    这似乎是 Telerik UI for WinForms 套件中 RadSyntaxEditor 的一个已知问题。您可以通过以下链接跟踪其进度、订阅状态更改并添加您的 cmets:https://feedback.telerik.com/winforms/1477890-radsyntaxeditor-changing-the-overloadinfocollection-doesn-t-update-the-ui

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 2023-04-11
      • 2013-02-03
      相关资源
      最近更新 更多