📄 frminibase.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 + -