怎么在C#中使用TextBox作數據輸入方法?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
讀取TextBox控件中數據并發送
private void Botton_Float_Click(object sender, EventArgs e) { if (button1.Text == "關閉串口") { if(TextBox_Tem_Cal.Text != String .Empty) //判斷數據輸入框是否為空 { HexMath CRC = new HexMath(); Byte[] buffer = new Byte[6]; float tem_cal_float = float.Parse(TextBox_Tem_Cal.Text); Byte[] float_byte_array = new Byte[4]; float_byte_array = FloatToBytes(tem_cal_float); buffer[0] = float_byte_array[0]; buffer[1] = float_byte_array[1]; buffer[2] = float_byte_array[2]; buffer[3 ] = float_byte_array[3]; CRC.CalculateCrc16(buffer, out buffer[5], out buffer[4]); serialPort1.Write(buffer, 0, 6); } else { MessageBox.Show("校準數據不能為空"); } } else { MessageBox.Show("串口未打開"); } }
限制TextBox控件輸入數據
private void TextBox_Tem_Cal_KeyPress(object sender, KeyPressEventArgs e)//在TextBox中按下按鍵時觸發事件,保證只能輸入數字 { //判斷按鍵是不是要輸入的類型。 if (((int)e.KeyChar < 48 || (int)e.KeyChar > 57) && (int)e.KeyChar != 8 && (int)e.KeyChar != 46) e.Handled = true; //小數點的處理。 if ((int)e.KeyChar == 46) //小數點 { if (TextBox_Tem_Cal.Text.Length <= 0) e.Handled = true; //小數點不能在第一位 else { float f; float oldf; bool b1 = false, b2 = false; b1 = float.TryParse(TextBox_Tem_Cal.Text, out oldf); b2 = float.TryParse(TextBox_Tem_Cal.Text + e.KeyChar.ToString(), out f); if (b2 == false) { if (b1 == true) e.Handled = true; else e.Handled = false; } } } }
Float 與 byte數組 互轉
private static byte[] FloatToBytes(float data) { unsafe { byte* pdata = (byte*)&data; byte[] byteArray = new byte[sizeof(float)]; for (int i = 0; i < sizeof(float); ++i) byteArray[i] = *pdata++; return byteArray; } } private static float BytesToFloat(byte[] data) { unsafe { float a = 0.0F; byte i; byte[] x = data; void* pf; fixed (byte* px = x) { pf = &a; for (i = 0; i < data.Length; i++) { *((byte*)pf + i) = *(px + i); } } return a; } }
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。