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); } } } }