- 开发环境
Microsoft Visual Studio 2017
- 开发语言
Visual C# WinForm
- 开发过程
- 新建一个Windows窗体应用(.Net Framework),将名称栏改为LinksMgrSystem,点确定生成解决方案。
- 在解决方案资源管理器里将Form1更改为FormMain。双击打开FormMain.cs,在窗体上拖入控件TabControl命名LinkTabControl,为LinkTabControl的TabPages属性添加TabPage1和TabPage2,在TabPage1中拖入ListView命名ListViewApp,在TabPage2中拖入ListView命名ListViewGame,拖入控件ImageList命名AppImage,拖入控件ContentMenuStrip命名RightButtonMenu并对控件进行布局排列。对FormMain添加事件Load。
- ListViewApp和ListViewGame属性设置:ContentMenuStrip为RightButtonMenu,LargeImageList为AppImge,MultiSelect为False,Sorting为Ascending,View为LargeIcon。对ListViewApp和ListViewGame添加事件SelectedIndexChanged、KeyDown、MouseDoubleClick、AfterLabelEdit。
- AppImage属性设置:ColorDepth为Depth32Bit,ImageSize为32,32,TransparentColor为Transparent。
- RightButtonMenu加入Item:运行程序(&R)、以管理员身份运行(&M)、新增快捷方式(&A)、删除快捷方式(&D)、重命名快捷方式(&N)、刷新快捷方式(&U)、清空快捷方式(&C)。
- 在解决方案里项目上右键添加LinksMgr.cs类(用来实现RightButtonMenu的Item功能)。在项目上右键选择“管理NuGet程序包”在“浏览”里搜索“SQLite”,安装“System.Data.SQLite”,在引用上右键选择添加引用,将“System.Drawing”添加到引用,在LinksMgr.cs里添加如下代码:
using System;
using System.Data;
using System.Data.SQLite;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Security.Principal;
using System.Windows.Forms;
namespace LinksMgrSystem
{
public class SQLiteHelper
{
/// <summary>
/// 执行表的增、删、改操作
/// </summary>
/// <param name="connection">数据库连接字符串</param>
/// <param name="sql">查询语句</param>
/// <returns>受影响的行数</returns>
public static int UpdateData(string connection, string sql)
{
SQLiteConnection conn = new SQLiteConnection(connection);
using (SQLiteCommand cmd = new SQLiteCommand(sql, conn))
{
try
{
conn.Open();
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
}
/// <summary>
/// 执行结果集中的第一个数据的查询
/// </summary>
/// <param name="connection">数据库连接字符串</param>
/// <param name="sql">查询语句</param>
/// <returns>受影响的结果集中的第一个数据</returns>
public static object GetExecuteScalar(string connection, string sql)
{
SQLiteConnection conn = new SQLiteConnection(connection);
using (SQLiteCommand cmd = new SQLiteCommand(sql, conn))
{
try
{
conn.Open();
return cmd.ExecuteScalar();
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
}
/// <summary>
/// 执行结果集中的所有数据的查询
/// </summary>
/// <param name="connection">数据库连接字符串</param>
/// <param name="sql">查询语句</param>
/// <returns>受影响的结果集中的所有数据</returns>
public static SQLiteDataReader GetExecuteReader(string connection, string sql)
{
SQLiteConnection conn = new SQLiteConnection(connection);
using (SQLiteCommand cmd = new SQLiteCommand(sql, conn))
{
try
{
conn.Open();
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
conn.Close();
throw ex;
}
}
}
/// <summary>
/// 验证数据文件是否存在
/// </summary>
/// <returns>存在与否</returns>
private static bool FileExists()
{
if (File.Exists(Application.StartupPath + "\\Links.db"))
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 数据文件不存在时创建
/// </summary>
private static bool CreateDBFile()
{
if (!FileExists())
{
try
{
SQLiteConnection.CreateFile(Application.StartupPath + "\\Links.db");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return true;
}
else
{
return false;
}
}
/// <summary>
/// 在数据文件中创建表
/// </summary>
public static void CreateTable()
{
if (CreateDBFile())
{
SQLiteConnection conn = new SQLiteConnection("data source = .\\Links.db");
conn.Open();
using (SQLiteCommand cmd = new SQLiteCommand("select * from sqlite_master where type='table' and name='AppsList'", conn))
{
SQLiteDataReader reader = cmd.ExecuteReader();
if (!reader.HasRows)
{
try
{
using (SQLiteCommand command = new SQLiteCommand("create table AppsList(AppName NVARCHAR, AppPath NVARCHAR, AppIcon IMAGE, IsGame BOOL, ListNumber INT)", conn))
{
command.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
reader.Close();
}
}
conn.Close();
}
}
}
public class LinksMgr
{
/// <summary>
/// 程序名称
/// </summary>
private string AppName { get; set; }
/// <summary>
/// 程序路径
/// </summary>
private string AppPath { get; set; }
/// <summary>
/// 附带参数
/// </summary>
private string A