EXE下载:http://files.cnblogs.com/xe2011/EXEgshop.dataeditorV1.42014-3-11-204242.7z

C#:http://files.cnblogs.com/xe2011/script_gshop.dataeditorV1.42014-3-11-204242.7z

本程序 是C#写的,系统必须安装了.net framework 2.0才能运行。
如不能运行请安装.NET 2.0
http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe

自动重命名批处理

gSev.bat  自动对拖拽到它身上的文件重命名为gshopsev.data

Shop.bat  自动对拖拽到它身上的文件重命名为gshop.data

本程序 支持把 gshop.data直接拖拽到程序上进行读取。支持145-151版本的gshop.data的编辑, 一句话只要能打开,然后保存为一个文件,能在次打开就支持。

编辑GSHOP.DATA的建议

1 正确的文件是这样的

   1本程序 可以打开。

  2 覆盖服务端关闭服务器 ,重启服务器 所有有服务都显示在线(绿色)

2 每大修改一分部,保存一次,然后将保存的文件拖拽到本程序 上看是否能打开。不能打开 的一定不能进游戏,需要重试!

3 部分物品堆叠上限是1 如果它的上限是1 你修改的数量大于1 则将无法进入游戏。

这是无法进入游戏的主要原因 比如 白金护身符 默认的堆叠上限为1 你误改成2或者更高 地图服务就掉线,无法进入游戏,提示版本低

4 在进行批量修改时一定要先 不选所有,然后再选要批量修改的。 5 建议修改gshop.data的时候不要修改 elements.data,反过来也是。

【2014年3月8日】

1 增加了查找物品的功能

2 改变了保存文件的方式

【2014年金3月3日】

增加了导入和导出功能

【2014年3月2日】

本程序的前身 这个不知道是哪个大神写的

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms; using System.Collections;//ArrayList
using System.IO;//FileStream
using System.Runtime.InteropServices;//Marshal namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Height = ;
} private ArrayList lst = new ArrayList();
public byte[] temp = new byte[];
public byte[] bt; private int amount;
private int gshopItemsCount;//gshop.data所有物品个数
private UInt32 gshopdataVersion;//gshop版本 private int no;
private int maxno = ;
private gds tgds;
private sgds tsgds;
private FileStream wFile;
private FileStream rFile;
private TreeNode tn; public static object rawDeserialize(byte[] rawdatas, Type anytype)
{
int num = Marshal.SizeOf(anytype);
object result;
if (num > rawdatas.Length)
{
result = null;
}
else
{
IntPtr intPtr = Marshal.AllocHGlobal(num);
Marshal.Copy(rawdatas, , intPtr, num);
object obj = Marshal.PtrToStructure(intPtr, anytype);
Marshal.FreeHGlobal(intPtr);
result = obj;
}
return result;
}
public static byte[] rawSerialize(object obj)
{
int num = Marshal.SizeOf(obj);
IntPtr intPtr = Marshal.AllocHGlobal(num);
Marshal.StructureToPtr(obj, intPtr, false);
byte[] array = new byte[num];
Marshal.Copy(intPtr, array, , num);
Marshal.FreeHGlobal(intPtr);
return array;
}
public void show(int i)
{
numericUpDown3.Value = BitConverter.ToInt32(((gds)lst[i]).id, );
numericUpDown4.Value = BitConverter.ToInt32(((gds)lst[i]).no, );
numericUpDown5.Value = BitConverter.ToInt32(((gds)lst[i]).amount, );
numericUpDown6.Value = (decimal)((double)BitConverter.ToInt32(((gds)lst[i]).price, ) / 100.0);
numericUpDown7.Value = BitConverter.ToInt32(((gds)lst[i]).time, );
numericUpDown8.Value = BitConverter.ToInt32(((gds)lst[i]).zid, );
numericUpDown9.Value = BitConverter.ToInt32(((gds)lst[i]).zam, );
numericUpDown10.Value = (decimal)((double)BitConverter.ToInt32(((gds)lst[i]).zpr, ) / 100.0);
comboBox1.Text = comboBox1.Items[BitConverter.ToInt32(((gds)lst[i]).type, )].ToString();
textBox1.Text = Encoding.Default.GetString(((gds)lst[i]).ic);
textBox2.Text = Encoding.Unicode.GetString(((gds)lst[i]).explanation);
textBox3.Text = Encoding.Unicode.GetString(((gds)lst[i]).name);
} public void ldMulu1()
{
comboBox2.Items.Clear();
for (int i = ; i < ; i++)
{
comboBox2.Items.Add(treeView1.Nodes[i].Text);
}
comboBox2.SelectedIndex = ;
}
public void ldMulu2()
{
comboBox3.Items.Clear();
for (int i = ; i < treeView1.Nodes[comboBox2.SelectedIndex].Nodes.Count; i++)
{
comboBox3.Items.Add(treeView1.Nodes[comboBox2.SelectedIndex].Nodes[i].Text);
}
comboBox3.SelectedIndex = ;
}
public void delmore()
{
for (int i = ; i < treeView1.Nodes.Count; i++)
{
for (int j = ; j < treeView1.Nodes[i].Nodes.Count; j++)
{
for (int k = ; k < treeView1.Nodes[i].Nodes[j].Nodes.Count; k++)
{
if (treeView1.Nodes[i].Nodes[j].Nodes[k].Checked)
{
treeView1.Nodes[i].Nodes[j].Nodes.RemoveAt(k);
doAmount(-);
k--;
}
}
}
}
} public void doAmount(int i)
{
amount += i; numericUpDown2.Value = amount; gshopItemsCount = amount;
// toolStripStatusLabel2.Text = String.Format("物品:{0}",gshopItemsCount);
groupBox1.Text = "版本:" + Convert.ToString(gshopdataVersion, ).ToUpper() + String.Format(" 物品:{0} 个", amount);
} private void button1_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode != null && treeView1.SelectedNode.Level == )
{
tgds.id = BitConverter.GetBytes((int)numericUpDown3.Value);
tgds.no = BitConverter.GetBytes((int)numericUpDown4.Value);
tgds.amount = BitConverter.GetBytes((int)numericUpDown5.Value);
tgds.price = BitConverter.GetBytes((int)(numericUpDown6.Value * 100m));
tgds.time = BitConverter.GetBytes((int)numericUpDown7.Value);
tgds.zid = BitConverter.GetBytes((int)numericUpDown8.Value);
tgds.zam = BitConverter.GetBytes((int)numericUpDown9.Value);
tgds.zpr = BitConverter.GetBytes((int)(numericUpDown10.Value * 100m));
tgds.type = BitConverter.GetBytes(comboBox1.SelectedIndex);
tgds.ic = new byte[tgds.ic.Length];
Encoding.Default.GetBytes(textBox1.Text).CopyTo(tgds.ic, );
tgds.explanation = new byte[tgds.explanation.Length];
Encoding.Unicode.GetBytes(textBox2.Text).CopyTo(tgds.explanation, );
tgds.name = new byte[tgds.name.Length];
Encoding.Unicode.GetBytes(textBox3.Text).CopyTo(tgds.name, );
lst[Convert.ToInt32(treeView1.SelectedNode.Tag)] = tgds;
treeView1.SelectedNode.Text = Encoding.Unicode.GetString(tgds.name);
}
应用更新物品button1.Enabled = false;
} private void button2_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode != null && tgds.id != null)
{
maxno++;
tn = new TreeNode();
if (treeView1.SelectedNode.Level == )
{
tgds.no = BitConverter.GetBytes(maxno);
tgds.cp = BitConverter.GetBytes(treeView1.SelectedNode.Parent.Index);
tgds.cs = BitConverter.GetBytes(treeView1.SelectedNode.Index);
tn.Text = Encoding.Unicode.GetString(tgds.name);
tn.Tag = lst.Count.ToString();
lst.Add(tgds);
treeView1.Nodes[treeView1.SelectedNode.Parent.Index].Nodes[treeView1.SelectedNode.Index].Nodes.Add(tn);
}
if (treeView1.SelectedNode.Level == )
{
tgds.no = BitConverter.GetBytes(maxno);
tn.Text = Encoding.Unicode.GetString(tgds.name);
tn.Tag = lst.Count.ToString();
lst.Add(tgds);
treeView1.Nodes[treeView1.SelectedNode.Parent.Parent.Index].Nodes[treeView1.SelectedNode.Parent.Index].Nodes.Add(tn);
}
doAmount();
}
} private void button3_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode != null && treeView1.SelectedNode.Level == )
{
treeView1.SelectedNode.Remove();
doAmount(-); }
} private void button5_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode != null && treeView1.SelectedNode.Level < )
{
treeView1.SelectedNode.Text = textBox4.Text;
ldMulu1();
}
} private void button6_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode != null && treeView1.SelectedNode.Level < )
{
if (treeView1.SelectedNode.Level == )
{
treeView1.Nodes[treeView1.SelectedNode.Parent.Index].Nodes.Add(textBox4.Text);
}
else
{
treeView1.Nodes[treeView1.SelectedNode.Index].Nodes.Add(textBox4.Text);
}
ldMulu1();
}
} private void button7_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode != null && treeView1.SelectedNode.Level == )
{
if (treeView1.SelectedNode.Nodes.Count > )
{
string s = String.Format("删除类别:{0}", treeView1.SelectedNode.Text); if (MessageBox.Show(s, "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
doAmount(-treeView1.SelectedNode.Nodes.Count);
treeView1.SelectedNode.Remove();
ldMulu1();
}
}
else
{
doAmount(-treeView1.SelectedNode.Nodes.Count);
treeView1.SelectedNode.Remove();
ldMulu1();
}
}
} private void button4_Click(object sender, EventArgs e)
{
maxno = ;
for (int i = ; i < treeView1.Nodes.Count; i++)
{
for (int j = ; j < treeView1.Nodes[i].Nodes.Count; j++)
{
for (int k = ; k < treeView1.Nodes[i].Nodes[j].Nodes.Count; k++)
{
maxno++;
tgds = (gds)lst[Convert.ToInt32(treeView1.Nodes[i].Nodes[j].Nodes[k].Tag)];
tgds.no = BitConverter.GetBytes(maxno);
lst[Convert.ToInt32(treeView1.Nodes[i].Nodes[j].Nodes[k].Tag)] = tgds;
}
}
}
} TreeNode theLastNode = null;//最后选择的节点(用于还原节点状态)
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (treeView1.SelectedNode.Level < )
{
textBox4.Text = treeView1.SelectedNode.Text;
}
if (treeView1.SelectedNode.Level == )
{
tgds = (gds)lst[Convert.ToInt32(treeView1.SelectedNode.Tag)];
show(Convert.ToInt32(treeView1.SelectedNode.Tag));
// groupBox2.Text = "物品:" + treeView1.SelectedNode.Text;
} toolTip1.SetToolTip(textBox1, textBox1.Text);
toolTip1.SetToolTip(textBox2, textBox2.Text);
toolTip1.SetToolTip(textBox3, textBox3.Text); if (this.treeView1.SelectedNode != null)
{
theLastNode = treeView1.SelectedNode;
} if (treeView1.SelectedNode != null && treeView1.SelectedNode.Level == )
应用更新物品button1.Enabled = true;
else
应用更新物品button1.Enabled = false;
} private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
e.Node.ForeColor = Color.Blue;
e.Node.NodeFont = new Font("宋体", , FontStyle.Underline);
if (theLastNode != null)
{
theLastNode.ForeColor = SystemColors.WindowText;
theLastNode.NodeFont = new Font("宋体", , FontStyle.Regular);
}
} private void treeView1_BeforeCheck(object sender, TreeViewCancelEventArgs e)
{
//for (int i = 0; i < e.Node.Nodes.Count; i++)
//{
// e.Node.Nodes[i].Checked = e.Node.Checked;
//}
} private void button8_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode != null)
{
TreeNode treeNode = new TreeNode();
if (treeView1.SelectedNode.Index != )
{
if (treeView1.SelectedNode.Index != )
{
treeNode = (TreeNode)treeView1.SelectedNode.Clone();
if (treeView1.SelectedNode.Level == )
{
treeView1.Nodes.Insert(treeView1.SelectedNode.PrevNode.Index, treeNode);
}
else
{
if (treeView1.SelectedNode.Level != )
{
treeView1.SelectedNode.Parent.Nodes.Insert(treeView1.SelectedNode.PrevNode.Index, treeNode);
}
}
treeView1.SelectedNode.Remove();
treeView1.SelectedNode = treeNode;
}
}
ldMulu1();
}
} private void button9_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode != null)
{
TreeNode treeNode = new TreeNode();
if (treeView1.SelectedNode.Level == )
{
if (treeView1.SelectedNode.Index != treeView1.Nodes.Count - )
{
treeNode = (TreeNode)treeView1.SelectedNode.Clone();
treeView1.Nodes.Insert(treeView1.SelectedNode.NextNode.Index + , treeNode);
treeView1.SelectedNode.Remove();
treeView1.SelectedNode = treeNode;
}
}
else
{
if (treeView1.SelectedNode.Level != )
{
if (treeView1.SelectedNode.Index != treeView1.SelectedNode.Parent.Nodes.Count - )
{
treeNode = (TreeNode)treeView1.SelectedNode.Clone();
treeView1.SelectedNode.Parent.Nodes.Insert(treeView1.SelectedNode.NextNode.Index + , treeNode);
treeView1.SelectedNode.Remove();
treeView1.SelectedNode = treeNode;
}
}
}
ldMulu1();
}
} private void button10_Click(object sender, EventArgs e)
{
byte[] bytes = BitConverter.GetBytes((int)numericUpDown11.Value);
for (int i = ; i < treeView1.Nodes.Count; i++)
{
for (int j = ; j < treeView1.Nodes[i].Nodes.Count; j++)
{
for (int k = ; k < treeView1.Nodes[i].Nodes[j].Nodes.Count; k++)
{
if (treeView1.Nodes[i].Nodes[j].Nodes[k].Checked)
{
tgds = (gds)lst[Convert.ToInt32(treeView1.Nodes[i].Nodes[j].Nodes[k].Tag)];
tgds.amount = bytes;
lst[Convert.ToInt32(treeView1.Nodes[i].Nodes[j].Nodes[k].Tag)] = tgds;
}
}
}
}
} private void button11_Click(object sender, EventArgs e)
{
byte[] bytes = BitConverter.GetBytes((int)(numericUpDown12.Value * 100m));
for (int i = ; i < treeView1.Nodes.Count; i++)
{
for (int j = ; j < treeView1.Nodes[i].Nodes.Count; j++)
{
for (int k = ; k < treeView1.Nodes[i].Nodes[j].Nodes.Count; k++)
{
if (treeView1.Nodes[i].Nodes[j].Nodes[k].Checked)
{
tgds = (gds)lst[Convert.ToInt32(treeView1.Nodes[i].Nodes[j].Nodes[k].Tag)];
tgds.price = bytes;
lst[Convert.ToInt32(treeView1.Nodes[i].Nodes[j].Nodes[k].Tag)] = tgds;
}
}
}
}
} private void button12_Click(object sender, EventArgs e)
{
byte[] bytes = Encoding.Unicode.GetBytes(textBox5.Text);
for (int i = ; i < treeView1.Nodes.Count; i++)
{
for (int j = ; j < treeView1.Nodes[i].Nodes.Count; j++)
{
for (int k = ; k < treeView1.Nodes[i].Nodes[j].Nodes.Count; k++)
{
if (treeView1.Nodes[i].Nodes[j].Nodes[k].Checked)
{
tgds = (gds)lst[Convert.ToInt32(treeView1.Nodes[i].Nodes[j].Nodes[k].Tag)];
tgds.explanation = new byte[tgds.explanation.Length];
bytes.CopyTo(tgds.explanation, );
lst[Convert.ToInt32(treeView1.Nodes[i].Nodes[j].Nodes[k].Tag)] = tgds;
}
}
}
}
} private void button13_Click(object sender, EventArgs e)
{
for (int i = ; i < treeView1.Nodes.Count; i++)
{
for (int j = ; j < treeView1.Nodes[i].Nodes.Count; j++)
{
for (int k = ; k < treeView1.Nodes[i].Nodes[j].Nodes.Count; k++)
{
if (treeView1.Nodes[i].Nodes[j].Nodes[k].Checked)
{
tn = treeView1.Nodes[i].Nodes[j].Nodes[k];
tn.Checked = false;
treeView1.Nodes[i].Nodes[j].Nodes.RemoveAt(k);
treeView1.Nodes[comboBox2.SelectedIndex].Nodes[comboBox3.SelectedIndex].Nodes.Add(tn);
k--;
}
}
}
}
} private void button14_Click(object sender, EventArgs e)
{
delmore();
} private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox2.SelectedIndex > -)
{
ldMulu2();
}
} //OpenGshopdata
private void OpenGshopdata(string sFileName)
{
try
{
rFile = new FileStream(sFileName, FileMode.Open); rFile.Seek(0L, SeekOrigin.Begin);
rFile.Read(temp, , ); //版本
gshopdataVersion = BitConverter.ToUInt32(temp, ); numericUpDown1.Value = BitConverter.ToUInt32(temp, );
// toolStripStatusLabel3.Text ="版本:" + Convert.ToString(gshopdataVersion, 16).ToUpper(); rFile.Read(temp, , );
amount = BitConverter.ToInt32(temp, ); ///
//总共物品个数
// toolStripStatusLabel2.Text = String.Format("物品:{0}", amount);
numericUpDown2.Value = amount;//////////////// groupBox1.Text = "版本:" + Convert.ToString(gshopdataVersion, ).ToUpper() + String.Format(" 物品:{0} 个", amount); bt = new byte[Marshal.SizeOf(typeof(gds))];
for (int i = ; i < amount; i++)
{
rFile.Read(bt, , Marshal.SizeOf(typeof(gds)));
lst.Add((gds)Form1.rawDeserialize(bt, typeof(gds)));
} bt = new byte[];
byte[] array = new byte[];
for (int i = ; i < ; i++)
{
rFile.Read(bt, , );
treeView1.Nodes.Add(Encoding.Unicode.GetString(bt));
comboBox2.Items.Add(Encoding.Unicode.GetString(bt));
rFile.Read(array, , );
int num = BitConverter.ToInt32(array, );
for (int j = ; j < num; j++)
{
rFile.Read(bt, , );
treeView1.Nodes[i].Nodes.Add(Encoding.Unicode.GetString(bt));
}
} rFile.Close();
for (int i = ; i < amount; i++)
{
int num2 = BitConverter.ToInt32(((gds)lst[i]).no, );
if (maxno < num2)
{
maxno = num2;
}
tn = new TreeNode();
tn.Text = Encoding.Unicode.GetString(((gds)lst[i]).name);
tn.Tag = i.ToString();
treeView1.Nodes[BitConverter.ToInt32(((gds)lst[i]).cp, )].Nodes[BitConverter.ToInt32(((gds)lst[i]).cs, )].Nodes.Add(tn);
}
ldMulu1();
}
catch (IOException ex)
{
MessageBox.Show(ex.ToString());
}
} //Savegshop.data
private void SaveGshopdata(string sFileName)
{ try
{
wFile = new FileStream(sFileName, FileMode.Create);
wFile.Seek(0L, SeekOrigin.Begin); temp = BitConverter.GetBytes((int)numericUpDown1.Value);///////ver wFile.Write(temp, , );
temp = BitConverter.GetBytes((int)numericUpDown2.Value);///////total count wFile.Write(temp, , ); no = ;
for (int i = ; i < treeView1.Nodes.Count; i++)
{
for (int j = ; j < treeView1.Nodes[i].Nodes.Count; j++)
{
for (int k = ; k < treeView1.Nodes[i].Nodes[j].Nodes.Count; k++)
{
tgds = (gds)lst[Convert.ToInt32(treeView1.Nodes[i].Nodes[j].Nodes[k].Tag)];
no++;
tgds.cp = BitConverter.GetBytes(i);
tgds.cs = BitConverter.GetBytes(j);
bt = Form1.rawSerialize(tgds);
wFile.Write(bt, , Marshal.SizeOf(typeof(gds)));
}
}
} bt = new byte[];
byte[] array = new byte[];
for (int i = ; i < treeView1.Nodes.Count; i++)
{
bt = new byte[];
Encoding.Unicode.GetBytes(treeView1.Nodes[i].Text).CopyTo(bt, );
wFile.Write(bt, , bt.Length);
wFile.Write(BitConverter.GetBytes(treeView1.Nodes[i].Nodes.Count), , );
for (int j = ; j < treeView1.Nodes[i].Nodes.Count; j++)
{
bt = new byte[];
Encoding.Unicode.GetBytes(treeView1.Nodes[i].Nodes[j].Text).CopyTo(bt, );
wFile.Write(bt, , );
}
}
wFile.Close();
}
catch (IOException ex)
{
MessageBox.Show(ex.ToString());
} } //Save gshopsev.data
private void SaveGshopSevData(string sFileName)
{
try
{
wFile = new FileStream(sFileName, FileMode.Create);
wFile.Seek(0L, SeekOrigin.Begin); wFile.Write(BitConverter.GetBytes((int)numericUpDown1.Value), , );////////////
wFile.Write(BitConverter.GetBytes((int)numericUpDown2.Value), , );///////////////// bt = new byte[Marshal.SizeOf(typeof(sgds))];
no = ;
for (int i = ; i < treeView1.Nodes.Count; i++)
{
for (int j = ; j < treeView1.Nodes[i].Nodes.Count; j++)
{
for (int k = ; k < treeView1.Nodes[i].Nodes[j].Nodes.Count; k++)
{
tgds = (gds)lst[Convert.ToInt32(treeView1.Nodes[i].Nodes[j].Nodes[k].Tag)];
tsgds = default(sgds);
tsgds.no = BitConverter.GetBytes(no);
no++;
tsgds.cp = BitConverter.GetBytes(i);
tsgds.cs = BitConverter.GetBytes(j);
tsgds.id = tgds.id;
tsgds.amount = tgds.amount;
tsgds.price = tgds.price;
tsgds.v1 = tgds.v1;
tsgds.time = tgds.time;
tsgds.v2 = tgds.v2;
bt = Form1.rawSerialize(tsgds);
wFile.Write(bt, , Marshal.SizeOf(typeof(sgds)));
for (int l = ; l < ; l++)
{
wFile.Write(BitConverter.GetBytes(4294967295u), , );
for (int m = ; m < ; m++)
{
wFile.Write(BitConverter.GetBytes(), , );
}
}
}
}
}
wFile.Close();
}
catch (IOException ex)
{
MessageBox.Show(ex.ToString());
}
} private void OpenGshopdata()
{
toolStripStatusLabel1.Text = "加载中...";
sOpenFileName = openFileDialog1.FileName;
Text = openFileDialog1.FileName + " - roman gshop Editor"; ///
treeView1.Nodes.Clear();
lst.Clear();
OpenGshopdata(openFileDialog1.FileName);
//// toolStripStatusLabel1.Text = "加载完毕";
timer1.Enabled = true; if (treeView1.Nodes.Count > )
{
treeView1.Focus();
treeView1.SelectedNode = treeView1.Nodes[];
}
numericUpDown1.Visible = true;
}
private void 打开OToolStripMenuItem1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
OpenGshopdata();
}
} private string CreateFile2(string sFileName)
{
string Dir = System.IO.Path.GetDirectoryName(sFileName) + "\\";
string FileTitle = "gshop";
string FileExt = System.IO.Path.GetExtension(sFileName); string s1 = Dir + FileTitle + FileExt;
int j = ; if (System.IO.File.Exists(s1))
{
string s = string.Format("{0}{1}_{2}{3}", Dir, j, FileTitle, FileExt);
while (System.IO.File.Exists(s))
{
j++;
s = string.Format("{0}{1}_{2}{3}", Dir, j, FileTitle, FileExt);
} if (!System.IO.File.Exists(s))
{
//"D:\Administrator\Desktop\GSHOPDATA\gshop.data"
////"D:\Administrator\Desktop\GSHOPDATA\gshopsev.data"
string gshopsevFileName = System.IO.Path.GetDirectoryName(s) + "\\" + Convert.ToString(j) + "_gshopsev.data"; ////Savegshop.data
SaveGshopdata(s); ////Save gshopsev.data
SaveGshopSevData(gshopsevFileName); //MessageBox.Show(s);
}
return s;
}
else
{
string gshopsevFileName = System.IO.Path.GetDirectoryName(s1) + "\\gshopsev.data"; ////Savegshop.data
SaveGshopdata(s1);
//MessageBox.Show(s1); ////Save gshopsev.data
SaveGshopSevData(gshopsevFileName);
return s1;
}
} private void SaveFile()
{
if (rFile != null)
{ string s = CreateFile2(sOpenFileName);
//string s=saveFileName;
sOpenFileName = s;
string gshopFileTitle = System.IO.Path.GetFileName(s);
string gshopSevTitle = gshopFileTitle.Substring(, gshopFileTitle.Length - ) + "gshopsev.data";
string path = System.IO.Path.GetDirectoryName(s);
//MessageBox.Show(gshopFileTitle);
//MessageBox.Show(gshopSevTitle);
//MessageBox.Show(path); MessageBox.Show("文件已保存!\r\n" + "客户端文件:" + gshopFileTitle +
"\r\n服务端文件:" + gshopSevTitle +
"\r\n存放的路径:" + path,
"ROMAN提示", MessageBoxButtons.OK, MessageBoxIcon.Information); timer1.Enabled = true; }
else
{
MessageBox.Show("null");
}
}
private void 保存SToolStripMenuItem1_Click(object sender, EventArgs e)
{ SaveFile();
toolStripStatusLabel1.Text = "保存成功";
} private string sOpenFileName = "";
private void 定位文件toolStripButton1_Click(object sender, EventArgs e)
{ if (System.IO.File.Exists(sOpenFileName))
{
System.Diagnostics.Process.Start("explorer.exe", @"/select," + sOpenFileName);
}
// Text = sOpenFileDir;
} private void toolStripMenuItem2_Click(object sender, EventArgs e)
{
saveFileDialog1.Title = "导出";
saveFileDialog1.FileName = "exportItem.data";
if (rFile != null && saveFileDialog1.ShowDialog() == DialogResult.OK)
{ try
{
wFile = new FileStream(saveFileDialog1.FileName, FileMode.Create);
wFile.Seek(0L, SeekOrigin.Begin);
for (int i = ; i < treeView1.Nodes.Count; i++)
{
for (int j = ; j < treeView1.Nodes[i].Nodes.Count; j++)
{
for (int k = ; k < treeView1.Nodes[i].Nodes[j].Nodes.Count; k++)
{
if (treeView1.Nodes[i].Nodes[j].Nodes[k].Checked)
{
tgds = (gds)lst[Convert.ToInt32(treeView1.Nodes[i].Nodes[j].Nodes[k].Tag)];
tgds.cp = BitConverter.GetBytes(i);
tgds.cs = BitConverter.GetBytes(j);
bt = Form1.rawSerialize(tgds);
wFile.Write(bt, , Marshal.SizeOf(typeof(gds)));
}
}
}
}
wFile.Close();
}
catch (IOException ex)
{
MessageBox.Show(ex.ToString());
}
}
} private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
if (rFile != null)
{
if (treeView1.SelectedNode == null || treeView1.SelectedNode.Level != )
{
MessageBox.Show("请选中存放导入数据的目录!");
}
else
{
openFileDialog1.Title = "导入";
openFileDialog1.FileName = "exportItem.data";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
rFile = new FileStream(openFileDialog1.FileName, FileMode.Open);
rFile.Seek(0L, SeekOrigin.Begin);
int num = Marshal.SizeOf(typeof(gds));
bt = new byte[num];
int num2 = ;
while ((long)num2 < rFile.Length)
{
rFile.Read(bt, , num);
tgds = (gds)Form1.rawDeserialize(bt, typeof(gds));
maxno++;
tgds.no = BitConverter.GetBytes(maxno);
tn = new TreeNode();
tn.Text = Encoding.Unicode.GetString(tgds.name);
tn.Tag = lst.Count.ToString();
lst.Add(tgds);
treeView1.SelectedNode.Nodes.Add(tn);
doAmount();
num2 += num;
}
rFile.Close();
}
catch (IOException ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}
} private void textBox3_DoubleClick(object sender, EventArgs e)
{
textBox3.SelectAll();
} private void textBox1_DoubleClick(object sender, EventArgs e)
{
textBox1.SelectAll();
} private void textBox2_DoubleClick(object sender, EventArgs e)
{
textBox2.SelectAll();
} private void 内容CToolStripMenuItem_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("iexplore.exe", "http://www.cnblogs.com/xe2011/p/3576727.html");
} private void 置顶TToolStripMenuItem_Click(object sender, EventArgs e)
{
TopMost = 置顶TToolStripMenuItem.Checked;
} private void 退出XToolStripMenuItem1_Click(object sender, EventArgs e)
{
Close();
} private void timer1_Tick(object sender, EventArgs e)
{
toolStripStatusLabel1.Text = "Ready";
timer1.Enabled = false;
} private void Form1_Load(object sender, EventArgs e)
{
toolStripStatusLabel1.Text = "Ready";
toolStripStatusLabel2.Text = "";
toolStripStatusLabel3.Text = ""; }
//CHECK NODE COUNT
private int TreeviewCountCheckedNodes(TreeNodeCollection treeNodeCollection)
{
int countchecked = ;
if (treeNodeCollection != null)
{
foreach (TreeNode node in treeNodeCollection)
{
if (node.Nodes.Count == && node.Checked)
{
countchecked++;
}
else if (node.Nodes.Count > )
{
countchecked += TreeviewCountCheckedNodes(node.Nodes);
}
}
}
return countchecked;
} private void timer2_Tick(object sender, EventArgs e)
{
try
{
//状态设置
定位文件toolStripButton1.Enabled = System.IO.File.Exists(sOpenFileName); 保存SToolStripButton.Enabled = (rFile != null);
保存SToolStripMenuItem1.Enabled = (rFile != null); 修改类名称button.Enabled = (treeView1.SelectedNode != null && treeView1.SelectedNode.Level < );
button6.Enabled = (treeView1.SelectedNode != null && treeView1.SelectedNode.Level < );
textBox4.Enabled = (treeView1.SelectedNode != null && treeView1.SelectedNode.Level < ); button7.Enabled = (treeView1.SelectedNode != null && treeView1.SelectedNode.Level == ); // 应用更新物品button1.Enabled = (treeView1.SelectedNode != null && treeView1.SelectedNode.Level == 2);
button2.Enabled = (treeView1.SelectedNode != null && tgds.id != null);
button3.Enabled = (treeView1.SelectedNode != null && treeView1.SelectedNode.Level == ); toolStripMenuItem1.Enabled = (treeView1.SelectedNode != null && treeView1.SelectedNode.Level == );
toolStripMenuItem2.Enabled = (treeView1.SelectedNode != null && treeView1.SelectedNode.Level == ); SearchNodeText.Enabled = textBox7.Text.Trim().Length > ; button8.Enabled = (treeView1.SelectedNode != null);
button9.Enabled = (treeView1.SelectedNode != null); 选中ToolStripMenuItem.Visible = (treeView1.SelectedNode != null && treeView1.SelectedNode.Level == );
清除ToolStripMenuItem.Visible = (treeView1.SelectedNode != null && treeView1.SelectedNode.Level == ); 修改类名称button.Enabled = textBox4.Modified; if (treeView1.Focused)
{
if (button7.Enabled)
{
删除类别TToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Delete;
}
else
{
删除类别TToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.None;
} if (button3.Enabled)
{
删除物品CToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Delete;
}
else
{
删除物品CToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.None;
}
}
else
{
删除物品CToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.None;
}
int ChecknodeItemsCount = TreeviewCountCheckedNodes(treeView1.Nodes);
toolStripStatusLabel2.Text = "选中物品: " + Convert.ToString(ChecknodeItemsCount); 导入toolStripButton1.Enabled = (treeView1.SelectedNode != null && treeView1.SelectedNode.Level == );
导出toolStripButton2.Enabled = (treeView1.SelectedNode != null && treeView1.SelectedNode.Level <= && ChecknodeItemsCount >= ); if (ChecknodeItemsCount > )
{
this.toolStripStatusLabel2.ForeColor = System.Drawing.Color.Red;
}
else
{
this.toolStripStatusLabel2.ForeColor = System.Drawing.Color.Black;
} groupBox3.Visible = (treeView1.SelectedNode.Level == ) && (ChecknodeItemsCount > ); 全选button16.Enabled = (treeView1.SelectedNode != null && treeView1.SelectedNode.Level == ); //Copy1.Enabled = treeView1.SelectedNode != null; // toolTip1.SetToolTip(treeView1, textBox1.Text); }
catch { }
} public void CheckAllNodes(TreeNodeCollection nodes)
{
foreach (TreeNode node in nodes)
{
node.Checked = true;
CheckChildren(node, true);
}
} public void UncheckAllNodes(TreeNodeCollection nodes)
{
foreach (TreeNode node in nodes)
{
node.Checked = false;
CheckChildren(node, false);
}
} private void CheckChildren(TreeNode rootNode, bool isChecked)
{
foreach (TreeNode node in rootNode.Nodes)
{
CheckChildren(node, isChecked);
node.Checked = isChecked;
}
}
private void 全选button16_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode != null)
{
treeView1.SelectedNode.Checked = false;
if (treeView1.SelectedNode.Level == )
CheckAllChildNodes(treeView1.SelectedNode, true);
}
} private void textBox1_Enter(object sender, EventArgs e)
{
//BeginInvoke((Action)delegate
//{
// textBox1.SelectAll();
//});
} private void textBox2_Enter(object sender, EventArgs e)
{
//BeginInvoke((Action)delegate
//{
// textBox2.SelectAll();
//});
} private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
TreeNode tn = treeView1.GetNodeAt(e.X, e.Y);
if (tn != null) treeView1.SelectedNode = tn;
}
} private void treeView1_KeyDown(object sender, KeyEventArgs e)
{
if (treeView1.SelectedNode == null)
return; if (e.KeyCode == Keys.Enter)
{
if (treeView1.SelectedNode.IsExpanded == false)
treeView1.SelectedNode.Expand();
else
treeView1.SelectedNode.Collapse();
} //if (e.KeyCode == Keys.Space)
//{ // treeView1.SelectedNode.Checked = false;
// 全选button16_Click(sender, e); // if (treeView1.SelectedNode.Checked == false)
// { // }
// else
// {
// 不选button17_Click(sender, e);
// } //} if (e.KeyCode == Keys.Escape)
{
不选button17_Click(sender, e);
} } private void treeView1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == )
{
e.Handled = true;
}
} private void textBox4_Enter(object sender, EventArgs e)
{
//BeginInvoke((Action)delegate
//{
// textBox4.SelectAll();
//});
} public void CheckAllChildNodes(TreeNode treeNode, bool bChecked)
{
foreach (TreeNode node in treeNode.Nodes)
{
node.Checked = bChecked; if (node.Nodes.Count > )
{
this.CheckAllChildNodes(node, bChecked);
}
}
} private void 不选button17_Click(object sender, EventArgs e)
{
foreach (TreeNode tn in treeView1.Nodes)
{
tn.Checked = false;
CheckAllChildNodes(tn, false);
}
} private void 清除当前ToolStripMenuItem_Click(object sender, EventArgs e)
{
CheckAllChildNodes(treeView1.SelectedNode, false);
} private void Form1_DragDrop(object sender, DragEventArgs e)
{
string sFileName = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue().ToString();
string sFileDir = System.IO.Path.GetDirectoryName(sFileName); openFileDialog1.FileName = sFileName;
OpenGshopdata();
} private void Form1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Link;
else e.Effect = DragDropEffects.None;
} private void 重新启动RToolStripMenuItem_Click(object sender, EventArgs e)
{
string sFileName = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
Close();
System.Diagnostics.Process.Start(sFileName);
} private void textBox4_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (修改类名称button.Enabled)
{
button5_Click(sender, e);
textBox4.Modified = false;
}
}
} private void textBox3_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (应用更新物品button1.Enabled)
{
button1_Click(sender, e);
textBox3.Modified = false;
}
}
} private void textBox3_TextChanged(object sender, EventArgs e)
{
if (treeView1.SelectedNode != null && treeView1.SelectedNode.Level == )
应用更新物品button1.Enabled = true;
} private void SelectAll(NumericUpDown numericUpDown)
{
numericUpDown.Select(, numericUpDown.Value.ToString().Length);
} private void numericUpDown3_Enter(object sender, EventArgs e)
{
//BeginInvoke((Action)delegate
//{
// SelectAll(numericUpDown3);
//});
} private void textBox4_DoubleClick(object sender, EventArgs e)
{
textBox4.SelectAll();
} private void numericUpDown5_Enter(object sender, EventArgs e)
{
//BeginInvoke((Action)delegate
//{
// SelectAll(numericUpDown5);
//});
} private void numericUpDown6_Enter(object sender, EventArgs e)
{
//BeginInvoke((Action)delegate
//{
// SelectAll(numericUpDown6);
//});
} private void numericUpDown7_Enter(object sender, EventArgs e)
{
//BeginInvoke((Action)delegate
//{
// SelectAll(numericUpDown7);
//});
} private void numericUpDown12_Enter(object sender, EventArgs e)
{
//BeginInvoke((Action)delegate
//{
// SelectAll(numericUpDown12);
//});
} private void numericUpDown11_Enter(object sender, EventArgs e)
{
//BeginInvoke((Action)delegate
//{
// SelectAll(numericUpDown11);
//});
} private void SearchNodes(string SearchText, TreeNode StartNode)
{
TreeNode node = null;
while (StartNode != null)
{
if (StartNode.Text.ToLower().Contains(SearchText.ToLower()))
{
CurrentNodeMatches.Add(StartNode);
} if (StartNode.Nodes.Count != )
{
SearchNodes(SearchText, StartNode.Nodes[]);//Recursive Search
}
StartNode = StartNode.NextNode;
}
} private List<TreeNode> CurrentNodeMatches = new List<TreeNode>();
private int LastNodeIndex = ;
private string LastSearchText; private void SearchNodeText_Click(object sender, EventArgs e)
{
treeView1.Focus();
string searchText = this.textBox7.Text;
if (String.IsNullOrEmpty(searchText))
{
return;
} if (LastSearchText != searchText)
{
//It's a new Search
CurrentNodeMatches.Clear();
LastSearchText = searchText;
LastNodeIndex = ;
SearchNodes(searchText, treeView1.Nodes[]); } if (CurrentNodeMatches.Count == )
toolStripStatusLabel3.Text = "无查找记录!";
else
toolStripStatusLabel3.Text = "";
/// MessageBox.Show("无查找记录!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); if (LastNodeIndex >= && CurrentNodeMatches.Count > && LastNodeIndex < CurrentNodeMatches.Count)
{
TreeNode selectedNode = CurrentNodeMatches[LastNodeIndex];
LastNodeIndex++;
this.treeView1.SelectedNode = selectedNode;
this.treeView1.SelectedNode.Expand();
this.treeView1.Select();
}
else
LastNodeIndex = ;
} private void textBox7_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
SearchNodeText_Click(sender, e);
}
} private void textBox7_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == )
{
e.Handled = true;
}
} private void cOPYToolStripMenuItem_Click(object sender, EventArgs e)
{
if (treeView1.SelectedNode != null)
{
string s = treeView1.SelectedNode.Text;
System.Windows.Forms.Clipboard.SetText(s);
}
} private void Form1_KeyDown(object sender, KeyEventArgs e)
{ } }
}

gshop.data 编辑器通杀版本 支持146-151版本的更多相关文章

  1. chromedriver版本 支持的Chrome版本

    在使用selenium测试时,如果选择chrome浏览器,需要将chrome driver的exe文件放在项目下 错误的driver版本,会导致无法正常打开本机的浏览器 以下为对应关系 来自网络 ch ...

  2. chromedriver版本支持的Chrome版本

    下载chromedriver,链接:http://chromedriver.storage.googleapis.com/index.html   chromedirver版本 支持的Chrome版本 ...

  3. chromedriver对应的支持的Chrome版本(更新至Chrome63)

    很多网友在配置chromedriver的时候会遇到很多麻烦,在网上找了很多资料觉得这个表格不错,就给大家分享出来,希望对大家配置chrome的时候有帮助: chromedriver版本 支持的Chro ...

  4. chromedriver对应的支持的Chrome版本(更新至Chrome64)

    很多网友在配置chromedriver的时候会遇到很多麻烦,在网上找了很多资料觉得这个表格不错,就给大家分享出来,希望对大家配置chrome的时候有帮助: chromedriver版本 支持的Chro ...

  5. New!Devexpress WPF各版本支持VS和SQL Server版本对应图

    点击获取DevExpress v19.2.3完整版试用下载 本文主要为大家介绍DevExpress WPF各大版本支持的VS版本和支持的.Net版本图,Devexpress WPF v19.2.3日前 ...

  6. New!Devexpress WinForms各版本支持Visual Studo和SQL Server版本对应图

    点击获取DevExpress v19.2.3最新完整版试用下载 本文主要为大家介绍DevExpress WinForms各大版本支持的VS版本和支持的.Net版本图,Devexpress WinFor ...

  7. 使用Selenium时,如何选择ChromeDriver驱动版本对应Chrome浏览器版本

      ChromeDriver版本 支持的Chrome版本 v2.46 v72-74 v2.45 v71-73 v2.44 v70-72 v2.43 v69-71 v2.42 v68-70 v2.41 ...

  8. Python爬虫教程-27-Selenium Chrome版本与chromedriver兼容版本对照表

    我们使用Selenium+Chrome时,版本不一样, 会导致 chromedriver 停止运行 chromedriver 所有版本下载链接:http://npm.taobao.org/mirror ...

  9. selenium driver版本和Chrome浏览器版本对应关系

    ChromeDriver v2.41 (2018-07-27) ---- Chrome v67-69ChromeDriver v2.40 (2018-06-07) ---- Chrome v66-68 ...

随机推荐

  1. ASP.NET Application_Error错误日志写入

    一个web项目开发已完成,测试也通过,但是,bug是测不完的,特别是在一个大的网络环境下.那么,我们就应该记录这些错误,然后改正.这里,我的出错管理页面是在global.asax里面的,利用里面的Ap ...

  2. [Gauss]HDOJ3976 Electric resistance

    题意: 一看图就明白了 要求的是1与n端点间的等效电阻 重点在于转化成考虑电流 根据KCL定理:在任一瞬间流出(流入)该节点的所有电流的代数和恒为零 U = IR 可以令1点的电势为零 那么n点的电势 ...

  3. yii

    2008年出现的一个以php为基础的框架,特点是:高性能框架.代码重用性.速度非常快(改完代码后直接刷新就可以展示修改后的页面).有小物件.登录组件.日志组件等等. main.php配置与数据库相连的 ...

  4. EJB理解

    1. 我们不禁要问,什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业级开发",那么 ...

  5. 【HDOJ】2065 "红色病毒"问题

    刚开始看这道题目的时候,完全没看出来是递推.看了网上大牛的分析.立刻就明白了.其实无论字符串长度为多少,都可以将该长度下的组合分成四种情况S1(A偶数C偶数).S2(A偶数C奇数).S3(A奇数C偶数 ...

  6. 《virtualbox完全学习手册》

    <virtualbox完全学习手册>之VirtualBox开源版和闭源版的区别 <virtualbox完全学习手册>之 玩转virtualbox的虚拟BIOS <virt ...

  7. App运营者必须知道的30款数据分析工具

    如今的移动应用早已不再是某种结构单一.功能简单的工具了.当我们的移动应用变得越来越庞杂,我们便会需要借用分析工具,来跟踪和分析App内的每一个部分.幸运的是,目前市面上有许多数据分析工具可供App开发 ...

  8. Linux kernel ‘qeth_snmp_command’函数缓冲区溢出漏洞

    漏洞名称: Linux kernel ‘qeth_snmp_command’函数缓冲区溢出漏洞 CNNVD编号: CNNVD-201311-423 发布时间: 2013-11-29 更新时间: 201 ...

  9. SQL Server触发器以及如何在SQL Server Manager中调试触发器

    ·只有inserted表有数据时,当前操作为insert:·inserted和deleted两张表都有数据时,当前操作为update:·只有deleted表有数据时,当前操作为delete. 1. C ...

  10. POJ -- 3233 求“等比矩阵”前n(n <=10^9)项和

    Matrix Power Series   Description Given a n × n matrix A and a positive integer k, find the sum S =  ...