⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frminibase.cs

📁 三国群英传7场景修改器 源代码
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace San7GeneralScreen
{
    public class FrmINIBase:Form
    {

        public FrmINIBase()
        {
            if (!DesignMode)
            {
                _CommonMenu = new ContextMenuStrip();
                _CommonMenu.Items.Add(CreateMenuItem("粘贴"));
            }
        }

        private ToolStripMenuItem CreateMenuItem(string menuText)
        {
            ToolStripMenuItem tsmi = new ToolStripMenuItem(menuText, null, CommonMenuItemEvent);
            return tsmi;
        }

        private void CommonMenuItemEvent(object sender, EventArgs e)
        {
            string strContent = Clipboard.GetText();
            string[] strItems = strContent.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
            if (MainDataGridView.SelectedCells.Count > 0)
            {
                for (int i = MainDataGridView.SelectedCells[0].RowIndex; i < strItems.Length + MainDataGridView.SelectedCells[0].RowIndex;i++ )
                {
                    MainDataGridView.Rows[i].Cells[MainDataGridView.SelectedCells[0].ColumnIndex].Value = strItems[i - MainDataGridView.SelectedCells[0].RowIndex];
                }
            }
        }


        public virtual DataGridView FindDataGridView(Control _control)
        {
            if (_control is DataGridView)
            {
                return (DataGridView)_control;
            }
            if (_control.Controls.Count > 0)
            {
                foreach (Control con in _control.Controls)
                {
                    DataGridView dgv = FindDataGridView(con);
                    if (dgv != null)
                    {
                        return dgv;                        
                    }
                }
            }
            return null;
        }

        private DataGridView _MainDataGridView=null;        
        public DataGridView MainDataGridView
        {
            get
            {
                if (_MainDataGridView == null)
                {
                    _MainDataGridView = FindDataGridView(this);
                    _MainDataGridView.ContextMenuStrip = _CommonMenu;
                }
                return _MainDataGridView;
            }
        }

        ContextMenuStrip _CommonMenu = null;

        private string _MainFileFullPath = "";

        public string MainFileFullPath
        {
            get { return _MainFileFullPath; }
            set { _MainFileFullPath = value; }
        }

        private string _EncodingName = "big5";

        public string EncodingName
        {
            get { return _EncodingName; }
            set { _EncodingName = value; }
        }

        private string _MainINITitle = "";

        public string MainINITitle
        {
            get { return _MainINITitle; }
            set { _MainINITitle = value; }
        }

        public virtual void OpenFile()
        {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Filter = "*.ini|*.ini";
            dlg.Title = "打开INI文件";            
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                _MainFileFullPath = dlg.FileName;
                RefurbishEntironment();                
            }          
        }

        public virtual void RefurbishEntironment()
        {
            FileStream fs = new FileStream(_MainFileFullPath, FileMode.Open);
            StreamReader sr = new StreamReader(fs, Encoding.GetEncoding(_EncodingName));
            try
            {
                MainDataGridView.Rows.Clear();
                MainDataGridView.Columns.Clear();
                bool colCreated = false;
                List<string> lstContent = new List<string>();
                lstContent.AddRange(sr.ReadToEnd().Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries));

                foreach (string line in lstContent)
                {
                    if (line.StartsWith("[") && line.Contains("]"))
                    {
                        _MainINITitle = line;
                        if (colCreated)
                        {
                            break;
                        }
                        else
                        {
                            colCreated = true;
                        }
                    }
                    else
                    {
                        INIValue iniLine = new INIValue(line);
                        if (iniLine.Name != "")
                        {
                            if (!MainDataGridView.Columns.Contains(iniLine.Name))
                            {
                                MainDataGridView.ColumnCount = MainDataGridView.Columns.Count + 1;
                                MainDataGridView.Columns[MainDataGridView.Columns.Count - 1].Name = iniLine.Name;
                                MainDataGridView.Columns[MainDataGridView.Columns.Count - 1].HeaderText = CommonDefine.GetColumnName(iniLine.Name);
                            }
                        }
                    }
                }
                if (MainDataGridView.Columns.Count > 5)
                {
                    MainDataGridView.Columns[0].Frozen = true;
                    MainDataGridView.Columns[1].Frozen = true;
                }

                foreach (string line in lstContent)
                {
                    if (line.StartsWith("[") && line.Contains("]"))
                    {
                        DataGridViewRow dgvr = new DataGridViewRow();
                        dgvr.CreateCells(MainDataGridView);
                        MainDataGridView.Rows.Add(dgvr);
                        if (_MainINITitle != line)
                        {
                            dgvr.Tag = line;
                        }
                    }
                    else
                    {
                        if (rtNull(MainDataGridView.Rows[MainDataGridView.Rows.Count - 1].Tag) != "")
                        {
                            MainDataGridView.Rows[MainDataGridView.Rows.Count - 1].Tag += Environment.NewLine + line;
                            MainDataGridView.Rows[MainDataGridView.Rows.Count - 1].Cells[0].Value = MainDataGridView.Rows[MainDataGridView.Rows.Count - 1].Tag;
                        }
                        else
                        {
                            INIValue iniLine = new INIValue(line);
                            if (iniLine.Name != "")
                            {
                                MainDataGridView.Rows[MainDataGridView.Rows.Count - 1].Cells[iniLine.Name].Value = iniLine.Value;
                            }
                        }
                    }
                }
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message);
            }
            sr.Close();
            fs.Close();
        }


        public virtual void SaveFile()
        {
            SaveFileDialog dlg = new SaveFileDialog();
            dlg.Filter = "*.ini|*.ini";
            dlg.Title = "保存ini文件";
            dlg.FileName = Path.GetFileNameWithoutExtension(_MainFileFullPath);
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                if (File.Exists(dlg.FileName))
                {
                    File.Delete(dlg.FileName);
                }
                FileStream fs = new FileStream(dlg.FileName, FileMode.OpenOrCreate);
                StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding(_EncodingName));
                foreach (DataGridViewRow dgvr in MainDataGridView.Rows)
                {
                    if (rtNull(dgvr.Tag) == "")
                    {
                        sw.WriteLine(_MainINITitle);
                        foreach (DataGridViewCell dgvc in dgvr.Cells)
                        {
                            sw.WriteLine(MainDataGridView.Columns[dgvc.ColumnIndex].Name + " = " + rtNull(dgvc.Value).Trim());
                        }
                        sw.WriteLine("");
                    }
                    else
                    {
                        sw.Write(dgvr.Tag.ToString());
                        sw.WriteLine("");
                    }
                }
                sw.Close();
                fs.Close();
                MessageBox.Show("保存成功!");
            }
        }

        public string rtNull(object obj)
        {
            if (obj == null)
            {
                return "";
            }
            return obj.ToString();
        }

        public virtual void ExecAction()
        {           
            FrmCommonTask fct = new FrmCommonTask(MainDataGridView);
            fct.ShowDialog();
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -