{"record":{"id":"3e40c3aac08d67b7","repo":"Unity-Technologies/UnityCsReference","slug":"invalid-columnindex-0-the-index-is-not-part-of","errorCode":null,"errorMessage":"Invalid columnIndex: {0}. The index is not part of the current visible columns: {1}","messagePattern":"Invalid columnIndex: (.+?)\\. The index is not part of the current visible columns: (.+?)","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"Editor/Mono/GUI/TreeView/MultiColumnHeader.cs","lineNumber":168,"sourceCode":"        public bool IsColumnVisible(int columnIndex)\n        {\n            foreach (int vc in state.visibleColumns)\n            {\n                if (vc == columnIndex)\n                    return true;\n            }\n            return false;\n        }\n\n        public int GetVisibleColumnIndex(int columnIndex)\n        {\n            for (int i = 0; i < state.visibleColumns.Length; i++)\n            {\n                if (state.visibleColumns[i] == columnIndex)\n                    return i;\n            }\n            string visibleIndices = string.Join(\", \", state.visibleColumns);\n            throw new ArgumentException(string.Format(\"Invalid columnIndex: {0}. The index is not part of the current visible columns: {1}\", columnIndex, visibleIndices), \"columnIndex\");\n        }\n\n        public Rect GetCellRect(int visibleColumnIndex, Rect rowRect)\n        {\n            Rect result = GetColumnRect(visibleColumnIndex);\n            result.y = rowRect.y;\n            result.height = rowRect.height;\n            return result;\n        }\n\n        public Rect GetColumnRect(int visibleColumnIndex)\n        {\n            if (visibleColumnIndex < 0 || visibleColumnIndex >= m_ColumnRects.Length)\n                throw new ArgumentException(string.Format(\"The provided visibleColumnIndex is invalid. Ensure the index ({0}) is within the number of visible columns ({1})\", visibleColumnIndex, m_ColumnRects.Length), \"visibleColumnIndex\");\n\n            return m_ColumnRects[visibleColumnIndex];\n        }\n","sourceCodeStart":150,"sourceCodeEnd":186,"githubUrl":"https://github.com/Unity-Technologies/UnityCsReference/blob/225b0fbdb57cc17d094e8056b71f8314aba56f73/Editor/Mono/GUI/TreeView/MultiColumnHeader.cs#L150-L186","documentation":"Thrown by GetVisibleColumnIndex when the requested columnIndex is not present in state.visibleColumns. It only accepts columns currently marked visible; hidden columns have no visible-position mapping.","triggerScenarios":"Passing a columnIndex for a column the user has hidden; querying a visible position for an always-hidden column.","commonSituations":"User toggled column visibility after an index was cached; a layout referencing a column that was removed from the visible set.","solutions":["Check IsColumnVisible(columnIndex) before calling GetVisibleColumnIndex.","Rebuild cached indices whenever visibleColumns changes.","Hide/show the column first if the operation requires it to be visible."],"exampleFix":"// before\nint vIdx = header.GetVisibleColumnIndex(colIdx);\n\n// after\nif (!header.IsColumnVisible(colIdx)) return -1;\nint vIdx = header.GetVisibleColumnIndex(colIdx);","handlingStrategy":"validation","validationCode":"if (!header.IsColumnVisible(columnIndex)) return -1; return header.GetVisibleColumnIndex(columnIndex);","typeGuard":"static bool IsVisibleColumn(int i, MultiColumnHeader h) => h.IsColumnVisible(i);","tryCatchPattern":null,"preventionTips":["Call IsColumnVisible before GetVisibleColumnIndex.","Invalidate cached visible indices when visibility changes.","Treat hidden columns explicitly in your layout logic."],"tags":["unity-editor","treeview","multicolumn","visibility"],"backgroundTag":null,"analyzedSha":"225b0fbdb57cc17d094e8056b71f8314aba56f73","analyzedAt":"2026-08-13T19:07:19.849Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}