コード例 #1
0
        public TextEditorControl()
        {
            SetStyle(ControlStyles.ContainerControl, true);

            textAreaPanel.Dock = DockStyle.Fill;

            Document = (new DocumentFactory()).CreateDocument();
            Document.HighlightingStrategy = HighlightingStrategyFactory.CreateHighlightingStrategy();

            primaryTextArea                    = new TextAreaControl(this);
            activeTextAreaControl              = primaryTextArea;
            primaryTextArea.TextArea.GotFocus += delegate {
                SetActiveTextAreaControl(primaryTextArea);
            };
            primaryTextArea.TextArea.Leave += delegate {
                textAreaLastLeave = TextAreaSide.Primary;
            };
            primaryTextArea.Dock = DockStyle.Fill;
            textAreaPanel.Controls.Add(primaryTextArea);
            InitializeTextAreaControl(primaryTextArea);
            Controls.Add(textAreaPanel);
            ResizeRedraw             = true;
            Document.UpdateCommited += new EventHandler(CommitUpdateRequested);
            OptionsChanged();
        }
コード例 #2
0
        public void Split()
        {
            if (secondaryTextArea == null)
            {
                secondaryTextArea        = new TextAreaControl(this);
                secondaryTextArea.Dock   = DockStyle.Bottom;
                secondaryTextArea.Height = Height / 2;

                secondaryTextArea.TextArea.GotFocus += delegate {
                    SetActiveTextAreaControl(secondaryTextArea);
                };

                textAreaSplitter             = new Splitter();
                textAreaSplitter.BorderStyle = BorderStyle.FixedSingle;
                textAreaSplitter.BackColor   = Color.Orange;
                textAreaSplitter.Height      = 8;
                textAreaSplitter.Dock        = DockStyle.Bottom;
                textAreaPanel.Controls.Add(textAreaSplitter);
                textAreaPanel.Controls.Add(secondaryTextArea);
                InitializeTextAreaControl(secondaryTextArea);
                secondaryTextArea.OptionsChanged();

                secondaryTextArea.TextArea.Leave += delegate {
                    textAreaLastLeave = TextAreaSide.Secondary;
                };

                secondaryTextArea.Caret.Position = primaryTextArea.Caret.Position;
                secondaryTextArea.CenterViewOn(secondaryTextArea.Caret.Line, 0);
                secondaryTextArea.TextArea.Select();
            }
            else
            {
                if (!primaryTextArea.TextArea.Focused && (secondaryTextArea.TextArea.Focused || textAreaLastLeave == TextAreaSide.Secondary))
                {
                    primaryTextArea.Caret.Position = secondaryTextArea.Caret.Position;
                }
                else
                {
                    secondaryTextArea.Caret.Position = primaryTextArea.Caret.Position;
                    secondaryTextArea.CenterViewOn(secondaryTextArea.Caret.Line, 0);
                }
                secondaryTextArea.Visible = !secondaryTextArea.Visible;
                textAreaSplitter.Visible  = !textAreaSplitter.Visible;
                if (secondaryTextArea.Visible == false)
                {
                    SetActiveTextAreaControl(primaryTextArea);
                }
                else
                {
                    secondaryTextArea.TextArea.Select();
                }

                //textAreaPanel.Controls.Remove(secondaryTextArea);
                //textAreaPanel.Controls.Remove(textAreaSplitter);

                //secondaryTextArea.Dispose();
                //textAreaSplitter.Dispose();
                //secondaryTextArea = null;
                //textAreaSplitter  = null;
            }
        }