WinForm查看SQL Server所有数据库表信息小工具

闲来无事,利用WinForm做了个查看SQL Server所有数据库表信息的小工具。

0_130305348177nV.gif

0_1303053501W7S1.gif

0_1303053521cCY7.gif

总结一下:

1、只允许运行应用程序的一个实例

ContractedBlock.gif ExpandedBlockStart.gif View Code
 
   
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
bool createNew;
try
{
using (System.Threading.Mutex m = new System.Threading.Mutex( true , " Global\\ " + Application.ProductName, out createNew))
{
if (createNew)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(
false );
Application.Run(
new Form1());
}
else
{
MessageBox.Show(
" Only one instance of this application is allowed! " );
}
}
}
catch
{
MessageBox.Show(
" 只允许运行该应用程序的一个实例! " );
}
}

2、给ComboBox添加项

ContractedBlock.gif ExpandedBlockStart.gif View Code
 
   
/// <summary>
/// 选择项类,用于ComboBox或者ListBox添加项
/// </summary>
public class ListItem
{
public ListItem( string sid, string sname)
{
ID
= sid;
Name
= sname;
}
public override string ToString()
{
return this .Name;
}
public string ID { get ; set ; }
public string Name { get ; set ; }
}
// 使用:
cboLoginType.Items.Add( new Comm.ListItem( " 0 " , " Windows 身份验证 " ));
cboLoginType.Items.Add(
new Comm.ListItem( " 1 " , " SQL Server 身份验证 " ));

3、窗体传值

ContractedBlock.gif ExpandedBlockStart.gif View Code
 
   
// 利用构造方法,LoginFM窗体传值给MainFM窗体

// LoginFM.cs代码:
MainFM f1 = new MainFM(txtServerName.Text.Trim());
f1.Show();

// MainFM.cs代码:
public MainFM()
{
InitializeComponent();
}
public MainFM( string name)
:
this ()
{
serverName
= name;
}

4、窗体伸缩时控制窗体内控件按比例自动伸缩

ContractedBlock.gif ExpandedBlockStart.gif View Code
 
   
public MainFM( string name)
:
this ()
{
serverName
= name;
SetControlWH(
this );
}
private void MainFM_Resize( object sender, EventArgs e)
{
SetControl2(
this );
}
double formoldwidth; // 窗体原始宽度
double formoldheight; // 窗体原始高度
private void SetControlWH(Control c)
{
double scalewh; // 控件宽高比
formoldwidth = ( double ) this .Width;
formoldheight
= ( double ) this .Height;
foreach (Control ctrl in c.Controls)
{
scalewh
= ( double )ctrl.Width / ( double )ctrl.Height;
ctrl.Tag
= ctrl.Left + " " + ctrl.Top + " " + ctrl.Width
+ " " + scalewh.ToString() + " " ; // 将控件的Left,Top,Width,宽高比放入控件的Tag内

if (ctrl != null )
SetControlWH(ctrl);
}
}
private void SetControl2(Control c)
{
double scalex; // 水平伸缩比
double scaley; // 垂直伸缩比
long i;
int temppos;
string temptag;
double [] pos = new double [ 4 ];
// pos数组保存当前控件的left,top,width,height
scalex = ( double ) this .Width / formoldwidth;
scaley
= ( double ) this .Height / formoldheight;
foreach (Control ctrl in c.Controls)
{
temptag
= ctrl.Tag.ToString();
for (i = 0 ; i <= 3 ; i ++ )
{
temppos
= temptag.IndexOf( " " );
if (temppos > 0 )
{
pos[i]
= Convert.ToDouble(temptag.Substring( 0 ,
temppos));
// 从Tag中取出参数
temptag = temptag.Substring(temppos + 1 );
}
else
pos[i]
= 0 ;
}
ctrl.Left
= ( int )(pos[ 0 ] * scalex);
ctrl.Top
= ( int )(pos[ 1 ] * scaley);
ctrl.Width
= ( int )(pos[ 2 ] * scalex);
ctrl.Height
= ( int )(( double )ctrl.Width / pos[ 3 ]);
// 高度由宽高比算出
SetControl2(ctrl);
}
}

5、设置DataGridView行变色

ContractedBlock.gif ExpandedBlockStart.gif View Code
 
   
private void dataGridView1_DataBindingComplete( object sender, DataGridViewBindingCompleteEventArgs e)
{
for ( int i = 0 ; i < this .dataGridView1.Rows.Count; i ++ )
{
if (i % 2 == 0 )
{
this .dataGridView1.Rows[i].DefaultCellStyle.BackColor = System.Drawing.SystemColors.Info; // 背景颜色
this .dataGridView1.Rows[i].DefaultCellStyle.ForeColor = System.Drawing.Color.Green; // 字体颜色
}
this .dataGridView1.Rows[i].DefaultCellStyle.SelectionBackColor = System.Drawing.Color.Green; // 选择行的颜色
}
}

6、让TreeView的节点不管有没子节点都默认“+”号:

ContractedBlock.gif ExpandedBlockStart.gif View Code
 
   
private void InitTreeList(DataTable dataTable)
{
this .treeView1.ImageIndex = 0 ;
TreeNode root
= new TreeNode(serverName, 0 , 0 );
foreach (System.Data.DataRow row in dataTable.Rows)
{
TreeNode node
= new TreeNode(row[ " name " ].ToString(), 1 , 1 );
node.Tag
= row[ " name " ].ToString();
// 以下生成一个子节点以让节点显示“+”号
TreeNode n = new TreeNode( " n " );
node.Nodes.Add(n);
root.Nodes.Add(node);
}
this .treeView1.Nodes.Add(root);
this .treeView1.Nodes[ 0 ].Expand();
}
// 选择节点时再生成子节点数据
private void treeView1_AfterSelect( object sender, TreeViewEventArgs e)
{
// 其它代码.....
// 点击“+”号生成节点数据时先删除原先的子节点
if ( this .treeView1.SelectedNode.Nodes.Count > 0 )
{
this .treeView1.SelectedNode.Nodes.Clear();
}
// 其它代码.....
}

7、设置TreeView点击节点前面“+”、“-”号自动选择相应节点

ContractedBlock.gif ExpandedBlockStart.gif View Code
 
   
private void treeView1_AfterExpand( object sender, TreeViewEventArgs e)
{
SetSelectNode(e.Node);
}
private void treeView1_AfterCollapse( object sender, TreeViewEventArgs e)
{
SetSelectNode(e.Node);
}
private void SetSelectNode(TreeNode tn)
{
if (tn == null )
return ;
if (tn.Tag == null )
return ;
treeView1.SelectedNode
= tn;
}

8、窗体监听热键

ContractedBlock.gif ExpandedBlockStart.gif View Code
 
   
private void MainFM_Activated( object sender, EventArgs e)
{
HotKey.RegisterHotKey(Handle,
100 , HotKey.KeyModifiers.None, Keys.F5);
}
private void MainFM_Leave( object sender, EventArgs e)
{
HotKey.UnRegisterHotKey(Handle,
100 );
}
/// <summary>
/// 监视Windows消息,重载WndProc方法,用于实现热键响应
/// </summary>
/// <param name="m"></param>
protected override void WndProc( ref Message m)
{
const int WM_HOTKEY = 0x0312 ;
switch (m.Msg)
{
case WM_HOTKEY:
switch (m.WParam.ToInt32())
{
case 100 :
// 这里快捷键响应代码
// ......
break ;
}
break ;
}
base .WndProc( ref m);
}

9、点击窗体右上角“关闭”按钮时最小化并托盘提示信息

ContractedBlock.gif ExpandedBlockStart.gif View Code
 
   
/*
(1)在窗体设计界面添加一个NotifyIcon控件notifyIcon1,添加一个ContextMenuStrip控件contextMenuStrip1;
(2)设置notifyIcon1的ContextMenuStrip属性为contextMenuStrip1、为Icon属性添加一个图标文件;
(3)在contextMenuStrip1的Items属性中添加两个菜单选项toolStripMenuItem_Show和toolStripMenuItem_Exit,名称分别为“打开”和“退出”;
下面为事件
*/
// 点击窗体右上角“关闭”按钮时最小化并托盘提示信息
private void MainFM_FormClosing( object sender, FormClosingEventArgs e)
{
e.Cancel
= true ; // 取消关闭窗体
this .Hide();
this .notifyIcon1.Visible = true ; // 显示托盘图标
this .notifyIcon1.Text = " 打开程序 " ;
notifyIcon1.ShowBalloonTip(
3000 , " 程序最小化提示 " , " 程序已经缩小到托盘,打开窗口请双击图标即可。 " , ToolTipIcon.Info);
}
// 双击打开程序
private void notifyIcon1_DoubleClick( object sender, EventArgs e)
{
ShowForm();
}
// 右键点击“打开”打开程序
private void toolStripMenuItem_Show_Click( object sender, EventArgs e)
{
ShowForm();
}
// 右键点击“退出”退出程序
private void toolStripMenuItem_Exit_Click( object sender, EventArgs e)
{
this .ShowInTaskbar = false ;
Application.Exit();
}
private void ShowForm()
{
this .Show();
if ( this .WindowState == FormWindowState.Minimized)
this .WindowState = FormWindowState.Normal;
this .Activate();
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值