コード例 #1
0
ファイル: DeviceFilterBasic.cs プロジェクト: xibeilang524/AC
        private void AddFilter(IDeviceFilter filter, bool isReadonly)
        {
            this.RowCount++;
            this.RowStyles.Add(new RowStyle());

            Type typControl = this.m_Application.GetControlType(filter.GetType(), typeof(System.Windows.Forms.Control));

            if (typControl == null)
            {
                Label lab = new Label();
                lab.Text         = "未发现 " + filter.GetType().FullName + " 的筛选器控件";
                lab.AutoEllipsis = true;
                lab.Padding      = new System.Windows.Forms.Padding(3);
                lab.Dock         = DockStyle.Bottom;
                this.Controls.Add(lab);

                if (this.EnabledRemove)
                {
                    System.Windows.Forms.Button btnFilterRemove = new Button();
                    btnFilterRemove.Image     = Properties.Resources.DeleteBlack;
                    btnFilterRemove.Width     = 24;
                    btnFilterRemove.FlatStyle = FlatStyle.Flat;
                    btnFilterRemove.FlatAppearance.BorderSize = 0;
                    btnFilterRemove.Dock   = DockStyle.Right;
                    btnFilterRemove.Click += new EventHandler(btnFilterRemove_Click);
                    this.Controls.Add(btnFilterRemove);
                }
            }
            else
            {
                System.Reflection.ConstructorInfo ciFilter = typControl.GetConstructor(new System.Type[] { });
                object objFilterInstance = ciFilter.Invoke(new object[] { });

                IDeviceFilterControl _FilterControl = objFilterInstance as IDeviceFilterControl;
                _FilterControl.SetApplication(this.m_Application);

                if (objFilterInstance is IUseAccount)
                {
                    IUseAccount useAccount = objFilterInstance as IUseAccount;
                    useAccount.SetAccount(this.m_Account);
                }

                _FilterControl.SetFilter(filter);

                Control ctl = objFilterInstance as Control;
                ctl.Dock = DockStyle.Bottom;
                if (isReadonly)
                {
                    ctl.Enabled = false;
                }
                this.Controls.Add(ctl);

                if (this.EnabledRemove)
                {
                    if (isReadonly)
                    {
                        Control ctlButton = new Control();
                        this.Controls.Add(ctlButton);
                    }
                    else
                    {
                        System.Windows.Forms.Button btnFilterRemove = new Button();
                        btnFilterRemove.Image     = Properties.Resources.DeleteBlack;
                        btnFilterRemove.Width     = 24;
                        btnFilterRemove.FlatStyle = FlatStyle.Flat;
                        btnFilterRemove.FlatAppearance.BorderSize = 0;
                        btnFilterRemove.Dock   = DockStyle.Right;
                        btnFilterRemove.Click += new EventHandler(btnFilterRemove_Click);
                        this.Controls.Add(btnFilterRemove);
                    }
                }
            }
        }