예제 #1
0
        /// <summary>
        /// Смена ведения истории
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void menuHistoryWrite_CheckedChanged(object sender, EventArgs e)
        {
            if (!m_AppStart)
            {
                return;
            }
            m_ParamInfo.HistoryWrite = menuEditWriteHistory.Checked;
            m_ActClass.SaveParameter(m_ParamInfo);

            var hisInfo = new HistoryInfo
            {
                SelectionStart      = textWindow.SelectionStart,
                SelectionLength     = textWindow.SelectionLength,
                ScrinText           = textWindow.Text,
                VertScrollPosition  = GetScrollPos(textWindow.Handle, 1 /* SB_VERT */),
                HorizScrollPosition = GetScrollPos(textWindow.Handle, 0 /* SB_HORIZ */)
            };

            m_HistoryClass = new HistoryClass(hisInfo);
        }
예제 #2
0
        /// <summary>
        /// Сохранить
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void menuFileSave_Click(object sender, EventArgs e)
        {
            try
            {
                if (m_FilePath == "")
                {
                    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                    {
                        m_FilePath = saveFileDialog1.FileName;
                    }
                    else
                    {
                        return;
                    }
                }
                try
                {
                    //
                    // Смена аттрибута, если он только для чтения
                    //
                    var            fi             = new FileInfo(m_FilePath);
                    FileAttributes saveFileAttrib = fi.Attributes;

                    if (fi.Attributes.ToString().Contains(FileAttributes.ReadOnly.ToString()))
                    {
                        if (MessageBox.Show("Файл помечен аттрибутом \"Только для чтения\". Перезаписать?", "Предупреждение", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                        {
                            fi.Attributes = FileAttributes.Normal;
                        }
                        else
                        {
                            return;
                        }
                    }

                    //
                    // Сохранение файла
                    //
                    using (var sw = new StreamWriter(m_FilePath, false, Encoding.GetEncoding("windows-1251")))
                    {
                        sw.Write(textWindow.Text);
                    }

                    //
                    // Возврат аттрибута только для чтения, если он был изменён
                    //
                    if (saveFileAttrib != fi.Attributes)
                    {
                        fi.Attributes = saveFileAttrib;
                    }

                    Text = "Блокнот - " + m_FilePath.Substring(m_FilePath.LastIndexOf('\\') + 1);
                    SetTextChange(false);

                    var hisInfo = new HistoryInfo
                    {
                        SelectionStart      = textWindow.SelectionStart,
                        SelectionLength     = textWindow.SelectionLength,
                        ScrinText           = textWindow.Text,
                        VertScrollPosition  = GetScrollPos(textWindow.Handle, 1 /* SB_VERT */),
                        HorizScrollPosition = GetScrollPos(textWindow.Handle, 0 /* SB_HORIZ */)
                    };
                    m_HistoryClass.Dispose();
                    m_HistoryClass = new HistoryClass(hisInfo);
                }
                catch (Exception exc)
                {
                    MessageBox.Show("Произошла ошибка: \r\n" + exc.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            finally
            {
                MainForm_InputLanguageChanged(null, null);
            }
        }