BinaryEditor:用ListView实现编辑二进制文件
BinaryEditor下载地址:【网通】点击这里来下载吧,带源程序哦。 【电信、网通】点击此处下载源程序
【下载说明】
1、单击上面这个地址,打开下载页面。
2、点普通下载--等待30秒--点“下载”按钮--保存
闲来无事,写了一个用ListView实现编辑二进制文件的程序,并且支持多标签浏览,也算是练习TabControl了.
输入时需要用到数字键盘的键,完成之后按Enter键. 注意,输入的数据的大小只能在0-255之间.
主要源程序:
/** Created by SharpDevelop.* User: PengJun* Date: 2012-5-9* Time: 12:47** To change this template use Tools | Options | Coding | Edit Standard Headers.*/
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;using System.IO;
using System.Diagnostics;namespace BinaryEditor
{/// <summary>/// Description of MainForm./// </summary>public partial class MainForm : Form{private ListViewItem.ListViewSubItem lvsi=null;private TextBox editTextBox=null;public MainForm(){//// The InitializeComponent() call is required for Windows Forms designer support.//InitializeComponent();//// TODO: Add constructor code after the InitializeComponent() call.//toolStripStatusLabel1.Text="";toolStripStatusLabel2.Text="";}void OpenToolStripMenuItemClick(object sender, EventArgs e){OpenFileDialog ofd=new OpenFileDialog();ofd.Multiselect=true;if(ofd.ShowDialog()==DialogResult.OK){for(int i=0;i<ofd.FileNames.Length;i++){LoadFile(ofd.FileNames[i]);}}}void LoadFile(string filePath){TabPage tp=new TabPage();ListView lv=new ListView();tp.Text=Path.GetFileName(filePath);lv.Anchor=AnchorStyles.Top|AnchorStyles.Bottom|AnchorStyles.Left|AnchorStyles.Right;lv.Location=new Point(0,0);lv.Size=new Size(tp.Width,tp.Height);lv.GridLines=true;lv.View=View.Details;lv.Name=Path.GetFileNameWithoutExtension(filePath);lv.MouseUp+=new MouseEventHandler(lv_MouseUp);lv.FullRowSelect=true;lv.MultiSelect=false;tp.Controls.Add(lv);tabControl1.TabPages.Add(tp);tabControl1.SelectedTab=tp;Stopwatch sw=new Stopwatch();sw.Start();using(BinaryReader br=new BinaryReader(File.Open(filePath,FileMode.Open))){long length=br.BaseStream.Length;int col=0;int row=0;int no=0;int rows=(int)Math.Ceiling(length/256.0);ListViewItem lvi;ListViewItem.ListViewSubItem lvsi=new ListViewItem.ListViewSubItem();for(int i=0;i<256;i++){lv.Columns.Add(i.ToString(),40,HorizontalAlignment.Center);}for(int i=0;i<rows;i++){lvi=new ListViewItem();lvi.Text=i.ToString();lv.Items.Add(lvi);}lv.BeginUpdate();while(no<length){no++;byte b=br.ReadByte();lvsi.Text=b.ToString();lv.Items[row].SubItems.Add(lvsi);lvsi=new ListViewItem.ListViewSubItem();col++;if(col==256){row++;col=0;}}lv.EndUpdate();}sw.Stop();toolStripStatusLabel1.Text=sw.ElapsedMilliseconds.ToString()+"ms";}void lv_MouseUp(object sender, MouseEventArgs e){TabPage currentTabPage=tabControl1.SelectedTab;string listViewName=currentTabPage.Text.Substring(0,currentTabPage.Text.Length-4);ListView currentListView=(ListView)currentTabPage.Controls.Find(listViewName,false)[0];//delete the old text boxif(this.editTextBox!=null){currentListView.Controls.Remove(this.editTextBox);this.editTextBox=null;}ListViewItem lvi=currentListView.GetItemAt(e.X,e.Y);ListViewItem.ListViewSubItem lvsi=lvi.GetSubItemAt(e.X,e.Y);int nColIndex=lvi.SubItems.IndexOf(lvsi);int nRowIndex=currentListView.SelectedIndices[0];toolStripStatusLabel2.Text="("+nRowIndex.ToString()+","+nColIndex.ToString()+")";TextBox editTextBox=new TextBox();editTextBox.Text=lvsi.Text;editTextBox.Location=new Point(lvsi.Bounds.Left,lvsi.Bounds.Top);editTextBox.Size=new Size(lvsi.Bounds.Width,lvsi.Bounds.Height);editTextBox.Visible=true;editTextBox.KeyUp+=new KeyEventHandler(editTextBox_KeyUp);currentListView.Controls.Add(editTextBox);this.lvsi=lvsi;this.editTextBox=editTextBox;editTextBox.Focus();editTextBox.Select(0,editTextBox.Text.Length);}void editTextBox_KeyUp(object sender, KeyEventArgs e){if(e.KeyCode==Keys.Enter){ TabPage currentTabPage=tabControl1.SelectedTab;string listViewName=currentTabPage.Text.Substring(0,currentTabPage.Text.Length-4);ListView currentListView=(ListView)currentTabPage.Controls.Find(listViewName,false)[0];try{byte b=byte.Parse(this.editTextBox.Text);this.lvsi.Text=b.ToString();currentListView.Controls.Remove(this.editTextBox);this.editTextBox=null;}catch(Exception ex){currentListView.Controls.Remove(this.editTextBox);this.editTextBox=null;MessageBox.Show(ex.Message,"Exception");}return;}if(!(e.KeyCode>= Keys.NumPad0 && e.KeyCode<=Keys.NumPad9)){MessageBox.Show("Must use the numeric pad 0~9.","Info");}}void CloseCurrentTabToolStripMenuItemClick(object sender, EventArgs e){int selectIndex=tabControl1.SelectedIndex;tabControl1.TabPages.Remove(tabControl1.SelectedTab);tabControl1.SelectedIndex=selectIndex-1;GC.Collect();}void ExitToolStripMenuItemClick(object sender, EventArgs e){Close();}void SaveToolStripMenuItemClick(object sender, EventArgs e){SaveFileDialog sfd=new SaveFileDialog();if(sfd.ShowDialog()==DialogResult.OK){using(BinaryWriter bw=new BinaryWriter(File.OpenWrite(sfd.FileName))){TabPage currentTabPage=tabControl1.SelectedTab;string listViewName=currentTabPage.Text.Substring(0,currentTabPage.Text.Length-4);ListView currentListView=(ListView)currentTabPage.Controls.Find(listViewName,false)[0];for(int i=0;i<currentListView.Items.Count;i++){for(int j=1;j<currentListView.Items[i].SubItems.Count;j++){string text=currentListView.Items[i].SubItems[j].Text;byte b=Convert.ToByte(text);bw.Write(b);}}}MessageBox.Show("Save Completely!","Info.");}}}
}
【更多阅读】
- [原]WMICodeCreator:C#产生WMI代码的工具
- [原]ManageStartUpApps:C#操作注册表来读取和修改开机启动项
- [原]Cls_Ini.cls:VB写的操作ini配置文件的类
- [原]Hotkey.cs:为应用程序添加热键
- [原]QQHelper:QQ大家来找茬 辅助工具 外挂
- [原]GetIcons:C#提取应用程序的图标资源
- [原]DownloadWebImages:下载某页面上的所有图片
- [原]QQHelper:QQ大家来找茬 辅助工具 外挂
- [译]用C#检测你的打印机是否连接
- [原]BinaryEditor:用ListView实现编辑二进制文件
BinaryEditor:用ListView实现编辑二进制文件相关推荐
- 工具及方法 - 编辑二进制文件(使用VSCode和Notepad++的插件Hex Editor)
Visual Studio Code 在VSCode里安装插件,可以实现很多功能. 打开VSCode,在菜单里选择, View->Extensions,就会出现扩展插件的查找页面. 输入想要查找 ...
- java 编辑二进制文件_java写二进制文件,不能直接编辑,该怎么操作?
java写二进制文件,不能直接编辑,该怎么操作? 关注:138 答案:3 mip版 解决时间 2021-01-14 21:48 提问者醒不来的梦 2021-01-14 07:45 我现在想做写一个 ...
- 如何用VI编辑器编辑二进制文件
1.用带-b参数的vim打开它,-b告诉vim打开的是二进制文件 $ vim -b binaryfile 2. 在vim下输入 :%!xxd,会得到如下显示, xxd程序是vim软件包自带的一个程序, ...
- Linux VIM编辑二进制文件
在vim下面编辑二进制的方式如下: vim -b binary_file -b 这个参数设定了 'binary' 选项. 然后输入: :%!xxd 这个命令把文件内容以常见的字节偏移 十六进制 ASC ...
- winform listview 动态编辑_霓虹灯:免费动画文字字体– 36个免费动态图形元素
想要为您的视频带来干净现代的感觉?还是复古,浮华的风格?下载这些功能强大的免费动画文本预设,可立即获得您想要的美感. 如果您看过我们的2019年创意趋势报告,就会知道霓虹灯和复古未来主义风格的美学在所 ...
- 使用 vim 和 xxd 编辑二进制文件
xxd xxd [options] [files] xxd 可以转储 [dump] 出文件的数据,反之亦可.例如: xxd -l 0x30 /bin/ls 00000000: 7f45 4c46 02 ...
- vim编辑二进制文件
命令模式下输入: :%!xxd vi打开文件的模式就转变成二进制的模式了 输入 :%!xxd -r 可以退出二进制模式 然后保存退出即可 注意:如果没有退出二进制模式就wq的话,该文件将变成二进制形式 ...
- 二进制修改linux文件,Linux下查看编辑二进制文件:hexedit神器
java String.split()函数的用法分析 java String.split()函数的用法分析 栏目:Java基础 作者:admin 日期:2015-04-06 评论:0 点击: 3,19 ...
- linux下的二进制文件的编辑和查看 -
linux下的二进制文件的编辑和查看 一.在Linux下查看二进制文件的软件: xxd (默认2进制) hexdump (默认16进制,可转其他进制) od (默认8进制,可转其他进制) 二.编辑: ...
最新文章
- ALE IDoc RFC of SAP
- 品牌到底要不要做全渠道?且听他们怎么说……
- hdu4609 3-idiots
- python同步两张数据表_Python 如何实现数据库表结构同步
- linux nohup 后台运行
- oracle左连接查询代码,ORACLE连接查询,内外连接
- 什么是Ultrabook
- Redis的持久化——AOF
- mongodb java 不等于_mongoDB在java上面的应用
- ibm x5服务器系统重装,IBM 3850 X5 Server安装Windows 2003步骤说明
- 百度网盘客户端(java)版本
- 受益于人工智能的发展,人们可以以前所未有的时空分辨率系统地观察神经活动
- 计算机自动关机启机唤醒设置,电脑定时自动关机怎么设置
- 高仿绚丽彩虹悬浮音乐播放器html5源码
- 【数据结构】详解KMP算法
- 报错package xxx is not in GOROOT or GOPATH 或者 cannot find package “xxx“ in any of
- windows中 mysql修改密码
- 如何写好JAVA代码
- 搜搜问问做外链是一个误区
- 3d空间中球体的动量守恒
热门文章
- 青楼梦-(在这里定一个小目标哈)
- 基于异构信息网络的元学习冷启动推荐
- 饥荒服务器显示必要模组,wegame饥荒必要模组加载失败 | 手游网游页游攻略大全...
- mapabc高德地图显示多个点,并且每个marker点可以响应鼠标点击事件,处理跳转页面
- python 图片转换成py文件
- Word 中Mathtype按钮灰色不可用的解决办法
- 基于BES蓝牙芯片PCBA测试程序接口实验
- 学生怎么在网上赚钱,想赚钱就要学会这些!
- 【过关斩将4】互联网老辛带你理清 “你还有什么想问我的吗?”
- 新港转债,百洋转债上市价格预测