关于C# winform窗体程序自动编号的问题
小弟新手 刚接触C#不久 现在做一个小系统 要求有一个自动编号的功能,比如我第一次在textbox输入Billcode-001 ,保存后,那么以后每次打开这个窗口,这个textbox都会自动+1,第二次打开窗体这个textbox显示的是Billcode_002,如果不保存,再打开的话还是Billcode_002,这个功能怎么实现啊,最好有具体代码,谢谢各位大神了,新手新注册的号也没啥分值。。。就一点,,总之知识无价~~麻烦大家了 --------------------编程问答-------------------- 配置文件,用系统的配置文件或者自己写配置文件--------------------编程问答-------------------- 啥意思。。不懂啊。。。能解释下么。。。我在网上查资料查了好久,都知识类似int型的自增,我这个属于string型吧。。。。这个不会弄啊 --------------------编程问答-------------------- 有一个笨方法:就是建一个表来存储你的值,保存的时候在更改这个值,不保存则不更改值。 --------------------编程问答-------------------- "Billcode-"+(自增长整型)变量.ToString().PadLeft(3,'0');
怎么存取(自增长整型)变量,参考楼上几位 --------------------编程问答-------------------- 这个如何更改啊,这个字段我刚才举例是billcode_001 这个不是一定的 也许是bill_code_0_01 以后自加1的时候变成bill_code_0_02 这都是有可能的。。所以更改这个值怎么更改啊 你说的笨方法我能明白 可是不会更改啊
--------------------编程问答-------------------- 第一次在textbox输入的内容万一没有数字呢?
如果有数字是不是右匹配? --------------------编程问答-------------------- 今天详细问了这个号的问题 号是13-002-0001 这是格式 13是2013年的意思 002固定不变 0001是第一号 也就是说第一次存第一张单子是13-002-0001 以后每次打开这个界面便会+1 变成13-002-0002 等到了2014年号全部更新 从14-002-0001开始. 这个需求 大家看看怎么实现啊 最好有代码 --------------------编程问答--------------------
有固定格式就简单了...Convert.ToInt32("13-002-0001".substring(7,4))+1;取最后存入的值+1放入TextBox --------------------编程问答-------------------- 额 你的意思我能看明白 就是能不能给一下详细的代码啊 。。谢谢啊 就是如何取最后存入的值 什么代码能实现取最后存入的值 然后再+1 这个代码如何实现。。 --------------------编程问答-------------------- 在Settings.settings里增加名称NowID,范围为“应用程序”,类型为int,值为1
读取代码:
string myValue = Properties.Settings.Default.NowID.ToString();
赋值代码:
DateTime.Now.ToString("yy")+"-002-"+myValue.PadLeft(4,'0')
保存比较麻烦:
string aa=(Convert.ToInt32(myValue) + 1).ToString();
string configFileName = Application.ExecutablePath + ".config";
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load(configFileName);
string configString = @"configuration/applicationSettings/WindowsFormsApplication1.Properties.Settings/setting[@name='NowID']/value"; //根据需要修改WindowsFormsApplication1和NowID
System.Xml.XmlNode configNode = doc.SelectSingleNode(configString);
if (configNode != null)
{
configNode.InnerText = aa.ToString();
doc.Save(configFileName);
// 刷新应用程序设置,这样下次读取时才能读到最新的值。
Properties.Settings.Default.Reload();
} --------------------编程问答-------------------- 直接转string就好了啊
"13-002-"+Convert.ToString(id.PadLeft(4, '0'));
把这个直接赋给textbox的Text
id就是你表里面存的最大的数+1 --------------------编程问答--------------------
这个是前10个说,单击按钮一次 +1
后面的判断就行
希望可以帮到你。方法笨但好理解 --------------------编程问答-------------------- 谢谢大家啊 根据大家给的意见 因为新手所以10楼大神的写法很多地方不太懂 不过大概意思明白了 然后11楼的大神的想法也很好 就是我综合了10楼大叔年份要时时更新的方法 12楼大神你写的这个按键触发事件不太好 我准备给他放到窗口初始化事件里 然后最后我是这么写的,但还没有调试 肯定写的不好 希望大家看后给予意见指正
private void Form4_Load(object sender, EventArgs e)
{
string sql = string.Format("select number from tb_code ");
DataTable dt = SQLhelper.GetDataSet(sql).Tables[0];
string code = dt.Rows[0]["number"].ToString();
string a = (Convert.ToInt32(code) + 1).ToString().PadLeft(4,'0');
string billcode = DateTime.Now.ToString("yy") + "-002-" + a;
textBox2.Text = billcode;
}
然后我准备在保存那个按钮里进行update我这个数据库number字段,等于保存的话都更新一下,每次打开窗口的时候都查询这个数字。方法虽然很笨,可是对我来说这样才看得懂,,各位看看思路可以么
补充:.NET技术 , C#