在开发短信系统的时候,碰到接收时需要回调,因本人新手,不了解回调,按着示例代码,可以弹出对话框显示接收的信息,但是不知道怎么吧这些信息存到数据库中,请大家指教,详细代码如下:        // 引用接收短信DLL
        [DllImport("EUCPComm.dll", EntryPoint = "ReceiveSMS")]  
       public static extern int ReceiveSMS(string sn, deleSQF mySmsContent); 
        public delegate void deleSQF(string mobile, string senderaddi, string recvaddi, string ct, string sd, ref int flag);
        deleSQF mySmsContent = new deleSQF(getSMSContent);        //再此处,可弹出对话框显示短信内容
        public static void getSMSContent(string mobile, string senderaddi, string recvaddi, string ct, string sd, ref int flag)
        {
            string mob = mobile;
            string content = ct;
            int myflag = flag;
            MessageBox.Show( mobile + "/" + senderaddi + "/" + recvaddi + "/" + ct + "/" + sd + "/" + flag);
        }        //这是单击按钮接收
        private void button5_Click(object sender, EventArgs e)
        {
            deleSQF mySmsContent = new deleSQF(getSMSContent);
            //接收短信                序列号       函数指针
            int result = 2;
            while (result == 2)  //当result = 2 时,说明还有下一批短信等待接收,这时需重新再调用一次ReceiveSMS方法
            {
                result = ReceiveSMS(textBox1.Text, mySmsContent);
                if (result == 1)
                {
                    textBox3.Text += "接收短信成功'"+DateTime.Now.ToString()+"'\r\n";
                    //ReceiveMsg recMsg = new ReceiveMsg();
                }
                else if (result == 101)
                {
                    textBox3.Text += "网络故障'" + DateTime.Now.ToString() + "'\r\n";
                }
                else if (result == 102)
                {
                    textBox3.Text += "其它故障'" + DateTime.Now.ToString() + "'\r\n";
                }
                else if (result == 105)
                {
                    textBox3.Text += "参数指针为空'" + DateTime.Now.ToString() + "'\r\n";
                }
                else if (result == 0)
                {
                    textBox3.Text += "失败'" + DateTime.Now.ToString() + "'\r\n";
                }
                else if (result == -1)
                {
                    textBox3.Text += "未知故障'" + DateTime.Now.ToString() + "'\r\n";
                }
            }
        }现在我的需求就是将接收到的信息存到数据库里面,或者显示到TEXTBOX3里面,显示到TEXTBOX3我就知道改怎么存到数据库了,希望大家帮忙看看,谢谢!!!

解决方案 »

  1.   

    textBox3.Text +=mobile + "/" + senderaddi + "/" + recvaddi + "/" + ct + "/" + sd + "/" + flag.toString();
      

  2.   

      public static void getSMSContent(string mobile, string senderaddi, string recvaddi, string ct, string sd, ref int flag)
            {
                string mob = mobile;
                string content = ct;
                int myflag = flag;
                extBox3.text= mobile + "/" + senderaddi + "/" + recvaddi + "/" + ct + "/" + sd + "/" + flag;
            }
      

  3.   

    调用getSMSContent,将给messagebox显示的值,复制文本框啦!
      

  4.   

    public static void getSMSContent(string mobile, string senderaddi, string recvaddi, string ct, string sd, ref int flag)//这个就是回调函数
    // 参数就是得到的value (string mobile, string senderaddi, string recvaddi, string ct, string sd, ref int flag)
    //在getSMSContent里添加:
       textBox3.Text +=mobile + "/" + senderaddi + "/" + recvaddi + "/" + ct + "/" + sd + "/" + flag.toString();
      

  5.   

    getSMSContent里面添加textBox3.Text +=mobile + "/" + senderaddi + "/" + recvaddi + "/" + ct + "/" + sd + "/" + flag.toString();,提示错误如下:
    错误 1 非静态的字段、方法或属性“WinFormsDemo.Form1.textBox3”要求对象引用