sách gpt4 ai đã đi

C#实现的下拉多选框,下拉多选树,多级节点

In lại 作者:撒哈拉 更新时间:2024-04-08 10:41:30 64 4
mua khóa gpt4 Nike

  今天给大家上个硬货,下拉多选框,同时也是下拉多选树,支持父节点跟子节点!该控件是基于Telerik控件封装实现的,所以大家在使用的过程中需要引用Telerik.WinControls.dll、Telerik.WinControls.UI.dll,还有一些相关的类库,大家有需要的可以去网上自己找,另外我也会把一些动态库放到CSDN上面,大家需要可以去下载.

[ToolboxItem(ĐÚNG VẬY)]
    công cộng một phần lớp học DropDownTreeViewControl : RadControl {
        công cộng DropDownTreeViewElement TreeViewElement { lấy; riêng tư bộ; }

        công cộng RadTreeView TreeViewControl {
            lấy
            {
                trở lại cái này.TreeViewElement.TreeViewControl; } }

        được bảo vệ override vô hiệu CreateChildItems(RadElement parent) {
            cái này.AllowShowFocusCues = ĐÚNG VẬY;

            base.CreateChildItems(parent);

            cái này.TreeViewElement = mới DropDownTreeViewElement(); parent.Children.Add(TreeViewElement); }

        được bảo vệ override vô hiệu OnEnter(EventArgs e) {
            base.OnEnter(e);
            cái này.TreeViewElement.Focus(); }

        được bảo vệ override vô hiệu OnBindingContextChanged(EventArgs e) {
            base.OnBindingContextChanged(e);

            cái này.TreeViewControl.BindingContext = cái này.BindingContext; }

        công cộng lớp học DropDownTreeViewElement : LightVisualElement {
            riêng tư chỉ đọc Color BG_COLOR = Color.White;
            riêng tư chỉ đọc Color BORDER_COLOR = Color.LightBlue;
            riêng tư chỉ đọc Color ARROW_BORDER_COLOR = Color.LightGray;
            riêng tư chỉ đọc Color ARROW_NORMAL_BG_COLOR = Color.White;
            riêng tư chỉ đọc Color ARROW_MOUSE_OVER_BG_COLOR = Color.LightYellow;
            riêng tư chỉ đọc Color ARROW_PRESSED_BG_COLOR = Color.DarkOrange;

            riêng tư chỉ đọc số nguyên NORMAL_BORDER_WIDTH = 1;
            riêng tư chỉ đọc số nguyên FOCUS_BORDER_WIDTH = 2;

            riêng tư RadArrowButtonElement arrow;
            riêng tư PopupForm popup;
            riêng tư bool isInnerCallHide;

            công cộng bool IsPopupOpen { lấy; riêng tư bộ; }
            công cộng RadTreeView TreeViewControl {
                lấy
                {
                    trở lại cái này.popup.TreeView; } }

            được bảo vệ override vô hiệu InitializeFields() {
                base.InitializeFields();

                // phong cách
                cái này.DrawBorder = ĐÚNG VẬY;
                cái này.BorderBoxStyle = BorderBoxStyle.SingleBorder;
                cái này.BorderGradientStyle = GradientStyles.Solid;
                cái này.BorderColor = BORDER_COLOR;
                cái này.DrawFill = ĐÚNG VẬY;
                cái này.NumberOfColors = 1;
                cái này.GradientStyle = GradientStyles.Solid;
                cái này.BackColor = BG_COLOR;
                cái này.StretchHorizontally = ĐÚNG VẬY;
                cái này.StretchVertically = ĐÚNG VẬY; }

            được bảo vệ override vô hiệu CreateChildElements() {
                base.CreateChildElements();

                // arrow
                cái này.CreateArrow();

                // popup
                cái này.CreatePopup();

                cái này.Children.Add(arrow); }

            riêng tư vô hiệu CreatePopup() {
                cái này.popup = mới PopupForm(cái này);
                cái này.popup.PopupClosing += Popup_PopupClosing;
                cái này.popup.PopupClosed += Popup_PopupClosed; }

            riêng tư vô hiệu Popup_PopupClosing(sự vật sender, RadPopupClosingEventArgs args) {
                // mouse postion in control-bounds prevent
                nếu như (args.CloseReason == RadPopupCloseReason.Mouse) {
                    khác nhau boundsSc = RectangleToScreen(cái này.Bounds);
                    nếu như (boundsSc.Contains(MousePosition)) { args.Cancel = ĐÚNG VẬY; } } }

            riêng tư vô hiệu Popup_PopupClosed(sự vật sender, RadPopupClosedEventArgs args) {
                nếu như (isInnerCallHide) {
                    trở lại; }
                cái này.IsPopupOpen = SAI;
                cái này.SwitchArrowState(SAI); }

            riêng tư vô hiệu CreateArrow() {
                cái này.arrow = mới RadArrowButtonElement() { ClickMode = ClickMode.Press, MinSize = mới Size(SystemInformation.VerticalScrollBarWidth, RadArrowButtonElement.RadArrowButtonDefaultSize.Height), StretchHorizontally = SAI, StretchVertically = ĐÚNG VẬY, Margin = mới System.Windows.Forms.Padding(2), }; arrow.Fill.NumberOfColors = 1; arrow.Fill.BackColor = ARROW_NORMAL_BG_COLOR; arrow.Border.BoxStyle = BorderBoxStyle.SingleBorder; arrow.Border.GradientStyle = GradientStyles.Solid; arrow.Border.ForeColor = ARROW_BORDER_COLOR; arrow.RadPropertyChanged += Arrow_RadPropertyChanged; arrow.Click += Arrow_Click; }

            riêng tư vô hiệu Arrow_Click(sự vật sender, EventArgs e) {
                nếu như (cái này.IsPopupOpen) {
                    cái này.IsPopupOpen = SAI;
                    cái này.SwitchArrowState(SAI);
                    cái này.HidePopup(); }
                khác
                {
                    cái này.IsPopupOpen = ĐÚNG VẬY;
                    cái này.SwitchArrowState(ĐÚNG VẬY);
                    cái này.ShowPopup(); } }

            riêng tư vô hiệu HidePopup() {
                cái này.isInnerCallHide = ĐÚNG VẬY;
                cái này.popup.Hide();
                cái này.isInnerCallHide = SAI; }

            riêng tư vô hiệu ShowPopup() {
                cái này.popup.Width = cái này.Bounds.Width;
                cái này.popup.Height = 250;
                cái này.popup.ShowPopup(cái này.RectangleToScreen(cái này.ControlBoundingRectangle)); }

            riêng tư vô hiệu SwitchArrowState(bool isPressed) {
                cái này.arrow.Fill.BackColor = isPressed ? ARROW_PRESSED_BG_COLOR : (arrow.IsMouseOver ? ARROW_MOUSE_OVER_BG_COLOR : ARROW_NORMAL_BG_COLOR); }

            được bảo vệ override vô hiệu OnPropertyChanged(RadPropertyChangedEventArgs e) {
                nếu như (e.Property == ContainsFocusProperty) {
                    khác nhau isFocus = (bool)e.NewValue;
                    cái này.BorderWidth = isFocus ? FOCUS_BORDER_WIDTH : NORMAL_BORDER_WIDTH; }

                base.OnPropertyChanged(e); }

            được bảo vệ override SizeF ArrangeOverride(SizeF finalSize) {
                base.ArrangeOverride(finalSize);

                // arrow on right side
                trôi nổi width = cái này.arrow.DesiredSize.Width;
                trôi nổi x = cái này.RightToLeft ? 0f : (finalSize.Width - width); RectangleF finalRect = mới RectangleF(x, 0f, width, finalSize.Height);
                cái này.arrow.Arrange(finalRect);

                trở lại finalSize; }

            riêng tư vô hiệu Arrow_RadPropertyChanged(sự vật sender, RadPropertyChangedEventArgs e) {
                nếu như (e.Property == RadArrowButtonElement.IsMouseOverProperty) {
                    nếu như (cái này.IsPopupOpen) {
                        trở lại; }

                    khác nhau arrow = sender BẰNG RadArrowButtonElement;
                    khác nhau isMouseOver = (bool)e.NewValue; arrow.Fill.BackColor = isMouseOver ? ARROW_MOUSE_OVER_BG_COLOR : ARROW_NORMAL_BG_COLOR; } } }

        công cộng lớp học PopupForm : RadSizablePopupControl {
            riêng tư HostTreeView tv;

            công cộng PopupForm(RadItem owner) : base(owner) {
                cái này.SizingMode = SizingMode.UpDownAndRightBottom;
                cái này.VerticalAlignmentCorrectionMode = AlignmentCorrectionMode.SnapToOuterEdges; }

            công cộng RadTreeView TreeView {
                lấy
                {
                    trở lại cái này.tv.TreeView; } }

            được bảo vệ override vô hiệu CreateChildItems(RadElement parent) {
                base.CreateChildItems(parent);

                cái này.tv = mới HostTreeView();
                cái này.tv.TreeView.Focusable = SAI;
                cái này.tv.TreeView.CheckBoxes = ĐÚNG VẬY;
                cái này.SizingGripDockLayout.Children.Add(tv); }


            công cộng override bool OnMouseWheel(Control target, số nguyên delta) {
                nếu như (delta < 0) {
                    cái này.tv.TreeView.VScrollBar.PerformSmallIncrement(1); }
                khác
                {
                    cái này.tv.TreeView.VScrollBar.PerformSmallDecrement(1); }

                trở lại ĐÚNG VẬY; } }

        công cộng lớp học HostTreeView : Telerik.WinControls.RadHostItem {
            công cộng HostTreeView() : base(mới RadTreeView()) { }

            công cộng RadTreeView TreeView {
                lấy
                {
                    trở lại cái này.HostedControl BẰNG RadTreeView; } } } }

  最后说明一点吧,这次封装对于我自己来说还有一个不满意的地方,那就是选择一些项目以后,界面上不显示已经选择的项,希望有人能够完善一下,给出改造后的代码.

最后此篇关于C#实现的下拉多选框,下拉多选树,多级节点的文章就讲到这里了,如果你想了解更多关于C#实现的下拉多选框,下拉多选树,多级节点的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

64 4 0
Bài viết được đề xuất: VisualStudio2022插件的安装及使用-编程手把手系列文章
Bài viết được đề xuất: pprof-在现网场景怎么用
Bài viết được đề xuất: 【学习笔记】基础数据结构:猫树
Bài viết được đề xuất: 利用BCEL字节码构造内存马
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com