2017-02-14 47 views
1
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 
using System.IO; 
using System.Web; 
using System.Net; 


namespace CS_Ex1 
{ 
    public partial class Form1 : Form 
    { 
    private string tb1, tb2; 
    public Form1() 
    { 
    InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 

    private void Connect_Click(object sender, EventArgs e) 
    { 
     WSMBT.Result Result; 
     wsmbtControl1.Mode = WSMBT.Mode.TCP_IP; 
     wsmbtControl1.ResponseTimeout = 1000; 
     Result = wsmbtControl1.Connect("127.0.0.1", 502); 
     if (Result != WSMBT.Result.SUCCESS) 
      MessageBox.Show(wsmbtControl1.GetLastErrorString()); 
    } 

    private void Disconnect_Click_1(object sender, EventArgs e) 
    { 
     wsmbtControl1.Close(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     Int16[] Registers = new Int16[20]; 
     WSMBT.Result Result; 
     Result = wsmbtControl1.ReadHoldingRegisters(1, 0, 20, Registers); 
     if (Result == WSMBT.Result.SUCCESS) 
     { 
      string DataString = ""; 
      string str = ""; 

      for (int i = 0; i < 20; i++) 
      { 
       str = string.Format("{0:D}", Registers[0]); 
       str = string.Format("{0:D}", Registers[1]); 

       DataString = DataString + str + "\r\n"; 
      } 
      TextBox1.Text = Registers[0].ToString(); 
      TextBox2.Text = Registers[1].ToString(); 


      tb1 = TextBox1.Text.ToString(); 
      tb2 = TextBox2.Text.ToString(); 
      } 
     else 
     { 
      MessageBox.Show(wsmbtControl1.GetLastErrorString()); 
     } 

    } 

    private void Write_Click(object sender, EventArgs e) 
    { 
     Int16[] Registers = new Int16[20]; 
     WSMBT.Result Result; 
     for (Int16 i = 0; i < 20; i++) 
      Registers[i] = i; 
     Result = wsmbtControl1.WriteMultipleRegisters(1, 0, 20, Registers); 
     if (Result != WSMBT.Result.SUCCESS) 
     { 
      MessageBox.Show(wsmbtControl1.GetLastErrorString()); 
     } 
    } 

    public static void message_Click() 
    { 
     string senderusername = "XXX"; 
     string senderpassword = "XXXX"; 
     string senderid = "22687"; 
     string sURL; 
     StreamReader objReader; 
     sURL = "URL"; 
     WebRequest wrGETURL; 
     wrGETURL = WebRequest.Create(sURL); 
     try 
     { 
      Stream objStream; 
      objStream = wrGETURL.GetResponse().GetResponseStream(); 
      objReader = new StreamReader(objStream); 
      objReader.Close(); 
     } 
     catch (Exception ex) 
     { 
      ex.ToString(); 
     } 
    } 
    } 


} 

在这个code变量TB1越来越改变所有我想要调用,将发送短信到用户手机message_click()方法的时候,TB1值被改变或假设的方法其值为10,然后tb1值更改为68,那么它应该调用message_click()并发送短消息我怎么能调用时变量值的变化

回答

2

您可以使用此属性。在二传,你可以调用变量后所需的方法已经改变:

public partial class Form1 : Form 
{ 
    private tb2; 
    private string _tb1; 

    public string tb1 
    { 
     get { return _tb1; } 
     private set 
     { 
      _tb1 = value; 
      message_click(); 
     } 
    } 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

注意,虽然属性public可以使二传手私有,这样的变量不能该类之外被改变。你也可以使用protected

protected string tb1 
{ ... 
+0

u能请把它放在代码中,我尝试这一点,但没有一样是到目前为止,我也许会犯错的地方 –

+0

@我犯了一个错误R-T!您需要将此行'tb1 = value;'更改为'_tb1 = value;'否则您将得到一个StackOverflow异常。我在我的帖子中纠正了它。现在它可以工作。我测试了它 –

+0

@ R-T在使它工作仍然没有运气? –

相关问题