在 Telerik RadDropDownList 弹出窗口与下拉列表中

in Telerik RadDropDownList popup vs dropdown

我正在以编程方式打开和关闭此控件,以便用户在其中有项目时立即打开该控件。

Telerik 支持人员解决了我的问题。 但是他们的解决方案使用了与我不同的方法(与他们的解决方案无关,那是另外一回事)。

为了打开控件,我这样做了(有效):

 private void order_con_name_DD_GotFocus(object sender, EventArgs e)
        {
            if (!order_con_name_DD.IsPopupVisible)
            {
                order_con_name_DD.ShowDropDown();

但是,他们建议使用这个(也有效)

 private void order_con_name_DD_GotFocus(object sender, EventArgs e)
    {
        if (!order_con_name_DD.IsPopupVisible)
        {
            RadElement element = this.order_con_name_DD.DropDownListElement.ElementTree.GetElementAtPoint(this.order_con_name_DD.DropDownListElement.PointFromScreen(Control.MousePosition));
            if (!(element is RadDropDownListArrowButtonElement))
            {
                this.order_con_name_DD.DropDownListElement.ArrowButton.PerformClick();
            }
        }
    }

为了关闭我正在做的控件(有效):

 private void DropDownList_PopupOpened(object sender, EventArgs e)
        {
           if (order_con_name_DD.IsPopupVisible)
            {
                order_con_name_DD.CloseDropDown();

他们的解决方案使用:

 private void DropDownList_PopupOpened(object sender, EventArgs e)
        {
           if (order_con_name_DD.IsPopupVisible)
            {
                order_con_name_DD.Popup.ClosePopup(RadPopupCloseReason.Keyboard);

我的问题是(我已经研究过了,但到目前为止还没有发现任何问题)- 这两个可行的解决方案之间有什么区别?

好的...来自 Telerik 的 Hristo:

关于您的问题:

RadDropDownList.CloseDropDown 方法在内部调用在弹出对象实例上定义的 ClosePopup。

实际上,调用箭头按钮或RadDopDownList.ShowDropDownMethod的PerformClick方法并没有太大区别。 PerformClick 方法将切换弹出状态,如果打开它将关闭它,反之亦然。