Was mir aufgefallen ist, dass brauchst du bei deine jetzigen Code nicht!

Code:
 private void button1_Click(object sender, EventArgs e)         
          {            
          string[] schnittstellen = SerialPort.GetPortNames();   // Gibt alle aktuell verfügbaren Comports zurück             
          foreach (string comport in schnittstellen)              
          {comboBox1.Items.Add(comport); }                       
          }
Du hast doch den Com Port statisch zugewiesen mit "Com3".

Ich hätte das so gemacht:

Code:
/// <summary>
        /// Com Port anzahl
        /// </summary>
        /// <returns></returns>
        int PortCount = 0;
        string Rueckmeldung = null;
        private string SerialPortCount()
        {
            try
            {
                string[] SettingPort = SerialPort.GetPortNames();
                foreach (string PortName in SettingPort)
                {
                    PortCount++;
                    this.comboBox1.Text = PortName;
                    this.comboBox1.Items.Add(PortName);
                }
                Rueckmeldung = "OK";
            }
            catch
            {
                Rueckmeldung = "Error";
            }
            return Rueckmeldung;
        }
 private void SendData(string DataInput)
        {
            SerialPort ComPort = new SerialPort(this.comboBox1.Text, 9600, Parity.None, 8, StopBits.One); 
            try
            {
                ComPort.Open();
                ComPort.Write(DataInput);
                this.label1.Text = ComPort.BytesToWrite.ToString();
                ComPort.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Schreib mal das so um zu sehn wieviel gesendet wird. ich kann es leider nicht testen ich hab z.Z. nichts am Com Port angeschlossen.

Code:
AktuellerComPort.Open();                 
          AktuellerComPort.Write(textBox1.Text);  // sende inhalt der Textbox an ComPort 
          this.label1.Text = ComPort.BytesToWrite.ToString();                   
          AktuellerComPort.Close();


Wenn du 5 zeichen sendest sollte im label 5 drin sein. ( es sei denn ich hab mich jetzt mit den buffer geirrt ). Das dass der "Globale" Sende Buffer ist.


MFG Oliver g

PS: ich schau noch mal weiter ob ich was finde was ich am Com anschliesen kann.