1、修改窗体只剩关闭按钮
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.MinimizeBox = false;
2、登录密码文本框敲回车键直接进入系统
private void txtPwd_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
picLogin_Click(sender, e);
}
}
3、判断文本框为空或者为NULL
if (String.IsNullOrEmpty(txtCode.Text.Trim()))
4、双引号里面添加引号的写法
string strSql = "select * from SYOperator where OperatorCode = '" + txtCode.Text.Trim() +
"' and PassWord = '" + txtPwd.Text.Trim() + "'";
5、SqlDataReader 读数的两种方法
SqlDataReader sdr = db.GetDataReader(strSql);
sdr.Read();
if (sdr.HasRows) 或者将这两行改为 while(sdr.Read())
{
AppMain AppForm = new AppMain(); //调用主窗体构造函数
Hide(); //隐藏当前窗体
PropertyClass.OperatorCode = sdr["OperatorCode"].ToString();
PropertyClass.OperatorName = sdr["OperatorName"].ToString();
PropertyClass.PassWord = sdr["PassWord"].ToString();
PropertyClass.IsAdmin = sdr["IsAdmin"].ToString();
AppForm.Show(); //显示主窗体
}
6、向下键时菜单的跳转顺序更改
this.menuStrip1.TabIndex = 1;//更改TabIndex的值即可。
7、关联快捷键的写法(alt+b)
this. ToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.B)))
8、动态获取时间
this.timerTime.Interval = 1000;//每隔1秒更新一次时间
private void timer1_Tick(object sender, EventArgs e)
{
statusLabelTime.Text = "当前时间" + DateTime.Now.ToString();
}
9、退出程序提示消息(关闭窗体之前)
private void AppMain_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("确定要退出吗", "软件提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
e.Cancel = false;
}
else
{
e.Cancel = true;
}
}
10、关闭窗体
private void AppMain_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
Dispose();
}
11、获取数据的对象,并根据这个对象写方法打开统一的窗体,实现代码重复利用
this.采购oToolStripMenuItem.Tag = "230"; //设制窗体的对象
commUse.ShowForm((ToolStripMenuItem) sender, this) //调用方法
public void ShowForm(ToolStripMenuItem menuItem, Form form)
{
switch (menuItem.Tag.ToString())
{
case "230":
FormBSInvenType invenType = new FormBSInvenType();
invenType.MdiParent = form;
invenType.StartPosition = FormStartPosition.CenterScreen;
invenType.Tag = menuItem.Tag.ToString();
invenType.Show();
break;
default:
break;
}
12、创建树
/// TreeView控件绑定到数据源
/// </summary>
/// <param name="tv"> TreeView控件</param>
/// <param name="imgList"> ImageList控件 </param>
/// <param name="rootName"> 根节点的文本属性值</param>
/// <param name="strTable"> 要绑定的数据表 </param>
/// <param name="strCode"> 数据表的代码列 </param>
/// <param name="strName"> 数据表的名称列 </param>
public void BuildTree(TreeView tv, ImageList imgList, string rootName, string strTable, string strCode,
string strName)
{
string strSql = null;
DataSet ds = null;
DataTable dt = null;
TreeNode rootNode = null;
TreeNode childNode = null;
strSql = "select " + strCode + " , " + strName + " from " + strTable;
tv.Nodes.Clear();
tv.ImageList = imgList;
//创建根结点
rootNode = new TreeNode();
rootNode.Tag = null;
rootNode.Text = rootName;
rootNode.ImageIndex = 1;
rootNode.SelectedImageIndex = 0;
try
{
ds = db.GetDataSet(strSql, strTable);
dt = ds.Tables[strTable];
foreach (DataRow row in dt.Rows)
{
//创建子节点
childNode = new TreeNode();
childNode.Tag = row[strCode];
childNode.Text = row[strName].ToString();
childNode.ImageIndex = 1;
childNode.SelectedImageIndex = 0;
rootNode.Nodes.Add(childNode);
}
tv.Nodes.Add(rootNode);
tv.ExpandAll();//展开显示所有数据
}
catch (Exception e)
{
MessageBox.Show(e.Message, "软件提示º");
throw e;
}
}
13、是否选种树结点 tvInvenType.SelectedNode != null
14、防止打开两个同样的窗体。
private bool IsOpenTab(string tabName)
{
bool isOpened = false;
foreach (TabItem tab in tabStrip1.Tabs)
{
if (tab.Text.Trim() == tabName)
{
isOpened = true;
tabStrip1.SelectedTab = tab;
break;
}
}
return isOpened;
}