2009-09-22 2 views
-1

Можете ли вы сказать мне, как добавить столбец в ListViewДобавить столбцы в ListView в C# .NET

У меня есть представление списка с именем «_listAvailable»,

мне нужно добавить столбец с именем «Name» но я не знаю, как это сделать. Это простой способ: ColumnHeader columnHeader1 = new ColumnHeader(); columnHeader1.Text = "Name"; listView1.Columns.Add (columnHeader1); , но в нашем проекте они делают все по-другому, я даю свою страницу кодирования здесь, например, «Политика ресурсов» является примером одного заголовка столбца в списке («_ listAvailable»), его имя «_chPolicy» (переменная, используемая в кодировке) .Its текст извлекая из файлов ресурсов (.resx) файлы

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Drawing; 
using System.Data; 
using System.Windows.Forms; 
using System.Reflection; 

using leaf.Utilities; 
using leaf.Plugins; 
using leaf.DataModel; 
using leaf.DataModel.Attributes; 
using leaf.DataModel.Exceptions; 
using leaf.Controls.Resources; 
using leaf.Controls.Dialogs; 
using leafControl = leaf.Controls.Controls; 

namespace leaf.Controls 
{ 
    /// <summary> 
    /// Editor displayed in the details pane for associating host systems with a resource policy. 
    /// </summary> 
    public class ResourcePolicySystemsControl : System.Windows.Forms.UserControl 
    { 
     #region ResourcePolicySystemsLVI 

     /// <summary> 
     /// ListViewItem class for displaying an item in the listview of 
     /// the ResourcePolicySystemsControl. 
     /// </summary> 
     public class ResourcePolicySystemsLVI : BaseLVItem 
     { 
      #region Properties 

      /// <summary> 
      /// The IResourcePolicy interface of the ManagedDevice associated with this ListViewItem. 
      /// </summary> 
      public new IResourcePolicy Data 
      { 
       get 
       { 
        return (IResourcePolicy)base.Data; 
       } 
      } 

      #endregion Properties 

      #region Constructors and Finalizers 

      /// <summary> 
      /// Constructor for a ResourcePolicySystemsLVI. 
      /// </summary> 
      /// <param name="md">Managed Device item 
      /// being displayed.</param> 
      public ResourcePolicySystemsLVI(ManagedDevice md) 
       : base(md) 
      { 
      } 

      #endregion Constructors and Finalizers 

      #region Methods 

      /// <summary> 
      /// Initially create and update this item and subitems. 
      /// </summary> 
      protected override void OnUpdate() 
      { 
       string func = "ResourcePolicySystemsLVI.OnUpdate"; 
       try 
       { 
        if (Data != null) 
        { 
         Text = base.Data.Name; 
         if (SubItems.Count == 1) 
         { 
          SubItems.Add(((IResourcePolicy)Data).ResourcePolicyEnabled.ToString()); 
          SubItems.Add(((IResourcePolicy)Data).ResourcePolicyCurrent.ToString()); 
         } 
         else 
         { 
          SubItems[1].Text = ((IResourcePolicy)Data).ResourcePolicyEnabled.ToString(); 
          SubItems[2].Text = ((IResourcePolicy)Data).ResourcePolicyCurrent.ToString(); 
         } 
        } 
        base.OnUpdate(); 
       } 
       catch (System.Exception exception) 
       { 
        leafDebug.DebugTraceSevere(func, "Exception: " + exception.ToString()); 
       } 
      } 

      #endregion Methods 
     } 

     #endregion 

     #region ResourcePolicyAvailSystemsLVI 

     /// <summary> 
     /// ListViewItem class for displaying an item in the listview of 
     /// the ResourcePolicySystemsControl. 
     /// </summary> 
     public class ResourcePolicyAvailSystemsLVI : BaseLVItem 
     { 
      #region Fields 

      private static string m_nullString = Managers.ControlStrings.GetString("ManagedDeviceWizard.None"); 

      #endregion Fields 

      #region Properties 

      /// <summary> 
      /// The IResourcePolicy interface of the ManagedDevice associated with this ListViewItem. 
      /// </summary> 
      public new IResourcePolicy Data 
      { 
       get 
       { 
        return (IResourcePolicy)base.Data; 
       } 
      } 

      #endregion Properties 

      #region Constructors and Finalizers 

      /// <summary> 
      /// Constructor for a ResourcePolicyAvailSystemsLVI. 
      /// </summary> 
      /// <param name="md">Managed Device item 
      /// being displayed.</param> 
      public ResourcePolicyAvailSystemsLVI(ManagedDevice md) 
       : base(md) 
      { 
      } 

      #endregion Constructors and Finalizers 

      #region Methods 

      /// <summary> 
      /// Initially create and update this item and subitems. 
      /// </summary> 
      protected override void OnUpdate() 
      { 
       string func = "ResourcePolicyAvailSystemsLVI.OnUpdate"; 
       try 
       { 
        if (Data != null) 
        { 
         Text = base.Data.Name; 
         if (SubItems.Count == 1) 
         { 
          if (Data.ResourcePolicy == null) 
           SubItems.Add(ResourcePolicyAvailSystemsLVI.m_nullString); 
          else 
           SubItems.Add(Data.ResourcePolicy.Name); 
         } 
         else 
         { 
          if (Data.ResourcePolicy == null) 
           SubItems[1].Text = ResourcePolicyAvailSystemsLVI.m_nullString; 
          else 
           SubItems[1].Text = Data.ResourcePolicy.Name; 
         } 
        } 
        base.OnUpdate(); 
       } 
       catch (System.Exception exception) 
       { 
        leafDebug.DebugTraceSevere(func, "Exception: " + exception.ToString()); 
       } 
      } 

      #endregion Methods 
     } 

     #endregion 

     #region Fields 

     private IContainer components; 

     // Indicates a refresh is necessary. 
     private bool _refresh = false; 

     // leaf server reference. 
     private leaf.Plugins.leafServer _leafServer = null; 

     // Gui components. 
     private Panel _panelBorder; 
     private ContextMenuStrip _cmenu; 
     private ToolStripMenuItem _cmenuDistribute; 
     private ToolStripMenuItem _cmenuEnable; 
     private ToolStripMenuItem _cmenuDisable; 
     private SplitContainer _splitter; 
     private Label _lblSelected; 
     private leafListView _listAvailable; 
     private ColumnHeader _chNameAvailable; 
     private Label _lblAvailable; 
     private leafListView _listSelected; 
     private ColumnHeader _chNameSelected; 
     private ColumnHeader _chEnabledSelected; 
     private ColumnHeader _chCurrentSelected; 

     #endregion Fields 

     #region Events 

     /// <summary> 
     /// Event raised when the SelectedObjects have changed. 
     /// </summary> 
     public event System.EventHandler SelectedObjectsChanged; 

     #endregion Events 

     #region Properties 

     /// <summary> 
     /// Get the ListView control. 
     /// </summary> 
     public leafListView ListView 
     { 
      get 
      { 
       return _listSelected; 
      } 
     } 

     /// <summary> 
     /// Get/set the selected objects for members display. 
     /// </summary> 
     public object[] SelectedObjects 
     { 
      get 
      { 
       return m_selectedObjects; 
      } 
      set 
      { 
       OnSelectedObjectsChanging(); 
       m_selectedObjects = value; 
       OnSelectedObjectsChanged(); 
      } 
     } 
     private object[] m_selectedObjects = null; 

     /// <summary> 
     /// Selected resource policy the host systems are to be assigned with. 
     /// </summary> 
     public ResourcePolicy ResourcePolicy 
     { 
      get 
      { 
       return m_resourcePolicy; 
      } 
      set 
      { 
       if (m_resourcePolicy != null) 
       { 
        m_resourcePolicy.Updated -= new EventHandler(m_resourcePolicy_Updated); 
       } 
       m_resourcePolicy = value; 
       if (m_resourcePolicy != null) 
       { 
        m_resourcePolicy.Updated += new EventHandler(m_resourcePolicy_Updated); 
       } 
      } 
     } 
     private ResourcePolicy m_resourcePolicy = null; 
     private ColumnHeader _chPolicy; 

     /// <summary> 
     /// Get/set the leaf Server object for the connection. 
     /// </summary> 
     public leaf.Plugins.leafServer leafServer 
     { 
      get 
      { 
       return _leafServer; 
      } 
      set 
      { 
       if (_leafServer != value) 
       { 
        if (_leafServer != null) 
        { 
         _leafServer.ObjectReceived -= new leafServer.ObjectEventHandler(ObjectReceived); 
        } 
        _leafServer = value; 
        if (_leafServer != null) 
        { 
         _leafServer.ObjectReceived += new leafServer.ObjectEventHandler(ObjectReceived); 
        } 
        _refresh = true; 
       } 
      } 
     } 

     /// <summary> 
     /// Get the list of host systems that is currently associated with 
     /// the selected resource policy for an OS type. 
     /// </summary> 
     public DataModelCollection PolicySystemsList 
     { 
      get 
      { 
       if (ResourcePolicy == null) 
        return new ManagedDeviceCollection(); 
       else 
        return ResourcePolicy.ManagedDevices; 
      } 
     } 

     /// <summary> 
     /// Get the list of host systems that is currently NOT associated with 
     /// the current resource policy. 
     /// </summary> 
     public DataModelCollection AvailableSystemsList 
     { 
      get 
      { 
       ManagedDeviceCollection mdc = new ManagedDeviceCollection(); 
       ObjectArray coll; 

       if (ResourcePolicy == null) 
        return mdc; 

       if (ResourcePolicy is WindowsResourcePolicy) 
       { 
        coll = leafServer.GetObjectsByType(typeof(WindowsSystem)); 
       } 
       else 
       { 
        coll = leafServer.GetObjectsByType(typeof(UnixSystem)); 
       } 
       foreach (ManagedDevice dev in coll) 
       { 
        if (dev.ImmediateState != ModifiedState.ToBeDeleted && 
         ((IResourcePolicy)dev).ResourcePolicy != ResourcePolicy) 
         mdc.Add(dev); 
       } 

       return mdc; 
      } 
     } 

     /// <summary> 
     /// the resource policy OS node associated with the control. 
     /// </summary> 
     public ResourcePolicyOSNode Node 
     { 
      get 
      { 
       return m_node; 
      } 
      set 
      { 
       m_node = value; 
      } 
     } 
     private ResourcePolicyOSNode m_node = null; 

     /// <summary> 
     /// Indicates if an Enable can be performed. 
     /// </summary> 
     public bool CanEnable 
     { 
      get 
      { 
       foreach (ResourcePolicySystemsLVI lvi in _listSelected.SelectedItems) 
       { 
        if (!lvi.Data.ResourcePolicyEnabled) 
        { 
         return true; 
        } 
       } 
       return false; 
      } 
     } 

     /// <summary> 
     /// Indicates if a Disable can be performed. 
     /// </summary> 
     public bool CanDisable 
     { 
      get 
      { 
       foreach (ResourcePolicySystemsLVI lvi in _listSelected.SelectedItems) 
       { 
        if (lvi.Data.ResourcePolicyEnabled) 
        { 
         return true; 
        } 
       } 

       return false; 
      } 
     } 

     /// <summary> 
     /// Indicates if a Distribute operation can be performed. 
     /// </summary> 
     public bool CanDistribute 
     { 
      get 
      { 
       return this._listSelected.SelectedItems.Count > 0 || 
        this._listAvailable.SelectedItems.Count > 0; 
      } 
     } 

     #endregion Properties 

     #region Constructors and Finalizers 

     /// <summary> 
     /// Create a ResourcePolicySystemsControl with default settings. 
     /// Must set the ResourcePolicy object before display. 
     /// </summary> 
     public ResourcePolicySystemsControl() 
     { 
      // This call is required by the Windows.Forms Form Designer. 
      InitializeComponent(); 

      // Attach to application idle 
      Application.Idle += new EventHandler(Application_Idle); 
     } 

     /// <summary> 
     /// Clean up any resources being used. 
     /// </summary> 
     protected override void Dileafse(bool dileafsing) 
     { 
      // Remove selected objects. 
      m_selectedObjects = null; 

      // Remove application idle handler. 
      Application.Idle -= new EventHandler(Application_Idle); 

      // Remove object received handler. 
      _leafServer.ObjectReceived -= new leafServer.ObjectEventHandler(ObjectReceived); 

      // Remove resource policy update handler 
      if (m_resourcePolicy != null) 
      { 
       m_resourcePolicy.Updated -= new EventHandler(m_resourcePolicy_Updated); 
      } 

      if (dileafsing) 
      { 
       if (components != null) 
       { 
        components.Dileafse(); 
       } 
      } 
      base.Dileafse(dileafsing); 
     } 

     #endregion Constructors and Finalizers 

     #region Component Designer generated code 
     /// <summary> 
     /// Required method for Designer support - do not modify 
     /// the contents of this method with the code editor. 
     /// </summary> 
     private void InitializeComponent() 
     { 
      this.components = new System.ComponentModel.Container(); 
      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ResourcePolicySystemsControl)); 
      this._panelBorder = new System.Windows.Forms.Panel(); 
      this._splitter = new System.Windows.Forms.SplitContainer(); 
      this._listSelected = new leaf.Plugins.leafListView(); 
      this._chNameSelected = new System.Windows.Forms.ColumnHeader(); 
      this._chEnabledSelected = new System.Windows.Forms.ColumnHeader(); 
      this._chCurrentSelected = new System.Windows.Forms.ColumnHeader(); 
      this._cmenu = new System.Windows.Forms.ContextMenuStrip(this.components); 
      this._cmenuEnable = new System.Windows.Forms.ToolStripMenuItem(); 
      this._cmenuDisable = new System.Windows.Forms.ToolStripMenuItem(); 
      this._cmenuDistribute = new System.Windows.Forms.ToolStripMenuItem(); 
      this._lblSelected = new System.Windows.Forms.Label(); 
      this._listAvailable = new leaf.Plugins.leafListView(); 
      this._chNameAvailable = new System.Windows.Forms.ColumnHeader(); 
      this._chPolicy = new System.Windows.Forms.ColumnHeader(); 
      this._lblAvailable = new System.Windows.Forms.Label(); 
      this._panelBorder.SuspendLayout(); 
      this._splitter.Panel1.SuspendLayout(); 
      this._splitter.Panel2.SuspendLayout(); 
      this._splitter.SuspendLayout(); 
      this._cmenu.SuspendLayout(); 
      this.SuspendLayout(); 
      // 
      // _panelBorder 
      // 
      this._panelBorder.Controls.Add(this._splitter); 
      resources.ApplyResources(this._panelBorder, "_panelBorder"); 
      this._panelBorder.Name = "_panelBorder"; 
      // 
      // _splitter 
      // 
      resources.ApplyResources(this._splitter, "_splitter"); 
      this._splitter.Name = "_splitter"; 
      // 
      // _splitter.Panel1 
      // 
      this._splitter.Panel1.Controls.Add(this._listSelected); 
      this._splitter.Panel1.Controls.Add(this._lblSelected); 
      // 
      // _splitter.Panel2 
      // 
      this._splitter.Panel2.Controls.Add(this._listAvailable); 
      this._splitter.Panel2.Controls.Add(this._lblAvailable); 
      // 
      // _listSelected 
      // 
      this._listSelected.AllowColumnReorder = true; 
      this._listSelected.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { 
      this._chNameSelected, 
      this._chEnabledSelected, 
      this._chCurrentSelected}); 
      this._listSelected.ContextMenuStrip = this._cmenu; 
      resources.ApplyResources(this._listSelected, "_listSelected"); 
      this._listSelected.FullRowSelect = true; 
      this._listSelected.HideSelection = false; 
      this._listSelected.Name = "_listSelected"; 
      this._listSelected.ShowItemToolTips = true; 
      this._listSelected.UseCompatibleStateImageBehavior = false; 
      this._listSelected.View = System.Windows.Forms.View.Details; 
      this._listSelected.Enter += new System.EventHandler(this.List_Enter); 
      this._listSelected.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.List_ColumnClick); 
      // 
      // _chNameSelected 
      // 
      resources.ApplyResources(this._chNameSelected, "_chNameSelected"); 
      // 
      // _chEnabledSelected 
      // 
      resources.ApplyResources(this._chEnabledSelected, "_chEnabledSelected"); 
      // 
      // _chCurrentSelected 
      // 
      resources.ApplyResources(this._chCurrentSelected, "_chCurrentSelected"); 
      // 
      // _cmenu 
      // 
      this._cmenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { 
      this._cmenuEnable, 
      this._cmenuDisable, 
      this._cmenuDistribute}); 
      this._cmenu.Name = "_contextMenuStrip"; 
      resources.ApplyResources(this._cmenu, "_cmenu"); 
      this._cmenu.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip_Opening); 
      // 
      // _cmenuEnable 
      // 
      this._cmenuEnable.Name = "_cmenuEnable"; 
      resources.ApplyResources(this._cmenuEnable, "_cmenuEnable"); 
      this._cmenuEnable.Click += new System.EventHandler(this.EnableClick); 
      // 
      // _cmenuDisable 
      // 
      this._cmenuDisable.Name = "_cmenuDisable"; 
      resources.ApplyResources(this._cmenuDisable, "_cmenuDisable"); 
      this._cmenuDisable.Click += new System.EventHandler(this.DisableClick); 
      // 
      // _cmenuDistribute 
      // 
      this._cmenuDistribute.Name = "_cmenuDistribute"; 
      resources.ApplyResources(this._cmenuDistribute, "_cmenuDistribute"); 
      this._cmenuDistribute.Click += new System.EventHandler(this.DistributeClick); 
      // 
      // _lblSelected 
      // 
      resources.ApplyResources(this._lblSelected, "_lblSelected"); 
      this._lblSelected.Name = "_lblSelected"; 
      // 
      // _listAvailable 
      // 
      this._listAvailable.AllowColumnReorder = true; 
      this._listAvailable.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { 
      this._chNameAvailable, 
      this._chPolicy}); 
      this._listAvailable.ContextMenuStrip = this._cmenu; 
      resources.ApplyResources(this._listAvailable, "_listAvailable"); 
      this._listAvailable.FullRowSelect = true; 
      this._listAvailable.HideSelection = false; 
      this._listAvailable.Name = "_listAvailable"; 
      this._listAvailable.ShowItemToolTips = true; 
      this._listAvailable.UseCompatibleStateImageBehavior = false; 
      this._listAvailable.View = System.Windows.Forms.View.Details; 
      this._listAvailable.Enter += new System.EventHandler(this.List_Enter); 
      this._listAvailable.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.List_ColumnClick); 
      // 
      // _chNameAvailable 
      // 
      resources.ApplyResources(this._chNameAvailable, "_chNameAvailable"); 
      // 
      // _chPolicy 
      // 
      resources.ApplyResources(this._chPolicy, "_chPolicy"); 
      // 
      // _lblAvailable 
      // 
      resources.ApplyResources(this._lblAvailable, "_lblAvailable"); 
      this._lblAvailable.Name = "_lblAvailable"; 
      // 
      // ResourcePolicySystemsControl 
      // 
      this.Controls.Add(this._panelBorder); 
      this.Name = "ResourcePolicySystemsControl"; 
      resources.ApplyResources(this, "$this"); 
      this.Load += new System.EventHandler(this.ResourePolicySystemsControl_Load); 
      this._panelBorder.ResumeLayout(false); 
      this._splitter.Panel1.ResumeLayout(false); 
      this._splitter.Panel2.ResumeLayout(false); 
      this._splitter.ResumeLayout(false); 
      this._cmenu.ResumeLayout(false); 
      this.ResumeLayout(false); 

     } 
     #endregion 

     #region Methods 

     /// <summary> 
     /// Removes the update handler from the selected objects. 
     /// </summary> 
     private void OnSelectedObjectsChanging() 
     { 
      if (m_selectedObjects != null) 
      { 
       foreach (ResourcePolicy rp in m_selectedObjects) 
       { 
        rp.Updated -= new EventHandler(DeviceUpdated); 
        foreach (ManagedDevice md in rp.ManagedDevices) 
         md.Updated -= new EventHandler(DeviceUpdated); 
       } 
      } 
     } 

     /// <summary> 
     /// Fills in the list view control with the appropriate managed 
     /// device objects and button display, and raises the SelectedObjectsChanged event. 
     /// </summary> 
     private void OnSelectedObjectsChanged() 
     { 
      _refresh = true; 
      if (m_selectedObjects != null) 
      { 
       foreach (ResourcePolicy rp in m_selectedObjects) 
       { 
        rp.Updated += new EventHandler(DeviceUpdated); 
        foreach (ManagedDevice md in rp.ManagedDevices) 
         md.Updated += new EventHandler(DeviceUpdated); 
       } 
      } 
      if (SelectedObjectsChanged != null) 
      { 
       SelectedObjectsChanged(this, new System.EventArgs()); 
      } 
     } 

     /// <summary> 
     /// Populate the available list and the selected list. 
     /// </summary> 
     public void FillOutListViewCtrl() 
     { 
      string func = "ResourcePolicySystemsControl.FillOutListViewCtrl"; 
      ManagedDeviceCollection list = new ManagedDeviceCollection(); 

      try 
      { 
       if (leafServer == null) 
        return; 

       _listSelected.BeginUpdate(); 
       _listAvailable.BeginUpdate(); 

       #region populate the selected list 

       // Collect selected items. 
       object[] selected = new object[_listSelected.SelectedItems.Count]; 
       _listSelected.SelectedItems.CopyTo(selected, 0); 

       // Clear listview. 
       _listSelected.Items.Clear(); 

       // Add systems. 
       ResourcePolicySystemsLVI item; 
       foreach (ManagedDevice md in PolicySystemsList) 
       { 
        item = new ResourcePolicySystemsLVI(md); 
        item.Update(); 
        foreach (object obj in selected) 
        { 
         item.Selected = (((ResourcePolicySystemsLVI)obj).Data == item.Data); 
         break; 
        } 
        _listSelected.Items.Add(item); 
       } 

       // Sort list. 
       _listSelected.Sort(); 

       // Ensure selected items are visible. 
       if (_listSelected.SelectedItems.Count > 0) 
       { 
        _listSelected.SelectedItems[_listSelected.SelectedItems.Count - 1].EnsureVisible(); 
        _listSelected.SelectedItems[0].EnsureVisible(); 
       } 

       #endregion 

       #region populate the available list 

       // Collect selected items. 
       selected = new object[_listAvailable.SelectedItems.Count]; 
       _listAvailable.SelectedItems.CopyTo(selected, 0); 

       // Clear listview. 
       _listAvailable.Items.Clear(); 

       // Add systems. 
       ResourcePolicyAvailSystemsLVI item2; 
       foreach (ManagedDevice md in AvailableSystemsList) 
       { 
        item2 = new ResourcePolicyAvailSystemsLVI(md); 
+1

Здравствуйте, Питер. Выберите свой код и нажмите кнопку кода (101010). Кроме того - это слишком много кода для любого вопроса, попробуйте сократить его до соответствующих бит. Благодарю. – Kobi

+1

Один вопрос: Как вы думаете, кто-нибудь когда-нибудь прочтет весь ваш код? –

+0

Я переформатировал образец кода, чтобы вы могли видеть, какой бит является актуальным вопросом. Однако образец слишком длинный, чтобы иметь много пользы для вопроса и слишком долго для StackOverflow, поэтому он усечен. –

ответ

0

Проблема проста на самом деле все coming.the причина, почему его не приходящий во время выполнения, мы ссылаемся на старую DLL, а не на новую DLL, тогда как это должно получиться, извините, что беспокоили вас, ребята

2

использование ListView.Columns.Add()

+0

Это самый простой способ, о котором я уже упоминал в своем вопросе, но здесь в моем проекте они делают другой путь – peter

+0

Я предполагаю, что вы используете эту систему на работе, так почему бы вам просто не спросить человека, который ее разработал? Он ушел? –

0

линия

this._listAvailable = new leaf.Plugins.leafListView(); 

означает, что элемент управления является производным от ListView (на самом деле, мы не можем точно знать, что это может быть целый класс со сходным api).
Это делает каждый ответ вы получите спекулятивный - это возможно, ваш класс ведет себя иначе, чем ListView (например, это может изменить некоторые методы или свойства)

+0

точно я добавил этот код и в наши вопросы, но я ничего не получил – peter

Смежные вопросы