示例#1
0
        private void ProcessItemValueChanged(MemberWrapper sender)
        {
            m_modified = true;

            // Set the "modified" flag in each property that's visible in the grid, then clear the cache.
            // (This needs to be done for all properties, because any of them may have changed as a result of one
            // value changing.) If the value was modified then RefreshIfExpanded() collapses and re-expands the
            // row to show the new value (which may have a different number of child properties than the old value).

            foreach (MemberWrapper wrapper in m_properties)
            {
                wrapper.SetModified();
                wrapper.ClearCache();
            }
            sender.Modified = true;

            // Check all the expanded members. Any one of them may now have completely different members,
            // so they need to be collapsed and re-expanded (unless the value was cahnged to null).

            DataGridExpandableColumn column = NameColumn;

            // Cannot use foreach here, because some elements may be removed from the collection as
            // we're iterating over it.

            for (int index = 0; index < m_properties.Count; index++)
            {
                MemberWrapper wrapper = (MemberWrapper)m_properties[index];
                column.RefreshIfExpanded((CellEditorData)wrapper.Tag);
            }

            // Invalidate the column to hide any + buttons that should no longer be shown and re-display
            // the values.

            column.Invalidate();
        }
示例#2
0
        private void InitialiseDataGrid()
        {
            DataGridTableStyle tableStyle = new DataGridTableStyle();

            DataGridExpandableColumn nameColumn = new DataGridExpandableColumn();

            nameColumn.ReadOnly    = true;
            nameColumn.MappingName = m_nameColumnMappingName;
            nameColumn.HeaderText  = NameColumnHeaderText;
            nameColumn.Width       = 100;
            nameColumn.Expand     += new MemberWrapperEventHandler(nameColumn_Expand);
            nameColumn.Collapse   += new MemberWrapperEventHandler(nameColumn_Collapse);
            tableStyle.GridColumnStyles.Add(nameColumn);

            if (ShowMemberTypeColumn)
            {
                DataGridTextBoxColumn memberTypeColumn = new DataGridTextBoxColumn();
                memberTypeColumn.ReadOnly    = true;
                memberTypeColumn.MappingName = m_memberTypeColumnMappingName;
                memberTypeColumn.HeaderText  = "Member Type";
                memberTypeColumn.Width       = 150;
                tableStyle.GridColumnStyles.Add(memberTypeColumn);
            }

            DataGridTextBoxColumn valueTypeColumn = new DataGridTextBoxColumn();

            valueTypeColumn.ReadOnly    = true;
            valueTypeColumn.MappingName = m_valueTypeColumnMappingName;
            valueTypeColumn.HeaderText  = "Value Type";
            valueTypeColumn.Width       = 150;
            tableStyle.GridColumnStyles.Add(valueTypeColumn);

            DataGridEditorColumn editorColumn = new DataGridEditorColumn();

            editorColumn.MappingName = m_editorColumnMappingName;
            editorColumn.HeaderText  = "Value";
            editorColumn.NullText    = "<null>";
            tableStyle.GridColumnStyles.Add(editorColumn);

            tableStyle.HeaderForeColor   = SystemColors.ControlText;
            tableStyle.RowHeadersVisible = false;
            tableStyle.MappingName       = typeof(MemberWrappers).Name;
            tableStyle.DataGrid          = this.grid;
            grid.TableStyles.Add(tableStyle);

            nameColumn.Initialise();
            editorColumn.Initialise();
            editorColumn.EditorCommitted += new MemberWrapperEventHandler(editorColumn_EditorCommitted);

            m_initialised = true;
        }