当前位置:编程学习 > C#/ASP.NET >>

关于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开始.  这个需求  大家看看怎么实现啊  最好有代码 --------------------编程问答--------------------
引用 7 楼 Small_Peach_diudiu 的回复:
今天详细问了这个号的问题  号是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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,