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

WindowsFormsApplication9.Form1.Dispose(bool): 没有找到适合的方法来重写,这个问题怎么解决?

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.Ports;

namespace mycomserialport
{
    

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();      //初始化组件
        }
      
        public string byteToHexStr(byte[] bytes)
        {
            string returnStr = "";
            StringBuilder strb=new StringBuilder();
            if (bytes != null)
            {

                for (int i = 0; i < bytes.Length; i++)
                {
                    strb.Append( bytes[i].ToString("X2"));
                    strb.Append(" ");
                }
            }
            returnStr = strb.ToString();
            return returnStr;
        }
        private void Assign Text Box Value(TextBox textBox1, string textBoxValue)
        {
            textBox1.Text += textBoxValue;
        }
        private delegate void TextBoxValueAssignDelegate(TextBox textBox1, string textBoxValue);

        private void Open_btn_Click(object sender, EventArgs e)
        {
            try
            {
                Close_btn.Enabled = true;
                Open_btn.Enabled = false;
                label1.Text = "串口" + serialPort1.PortName.ToString() + "已打开!";
                serialPort1.Open();
            }
            catch 
            {
                Close_btn.Enabled = false;
                Open_btn.Enabled = true;
                label1.Text = "串口" + serialPort1.PortName.ToString() + "打开失败!";
            }

        }

        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            
            // 获取字节长度
            int bytes = serialPort1.BytesToRead;
            // 创建字节数组
            byte[] buffer = new byte[bytes];
            // 读取缓冲区的数据到数组
            serialPort1.Read(buffer, 0, bytes);
            // 显示读取的数据到数据窗口
          
                this.BeginInvoke(new TextBoxValueAssignDelegate(this.AssignTextBoxValue), new object[] { textBox1, byteToHexStr(buffer) + "\n" });
          

        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.serialPort1.IsOpen)
            {
                serialPort1.Close();
                Close_btn.Enabled = false;
                Open_btn.Enabled = true;
            }
 
            serialPort1.PortName = comboBox1.SelectedItem.ToString();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //获取串口 
            Microsoft.VisualBasic.Devices.Computer pc = new Microsoft.VisualBasic.Devices.Computer();
            foreach (string s in pc.Ports.SerialPortNames)
            {
                this.comboBox1.Items.Add(s);
            }
            this.comboBox1.SelectedIndex = 0;
            this.comboBox2.SelectedIndex = 0;
            this.comboBox3.SelectedIndex = 0;
            this.comboBox4.SelectedIndex = 0;
            this.comboBox5.SelectedIndex = 0;
            Close_btn.Enabled = false;
            Open_btn.Enabled = true;
            label1.Text="请选择串口!";
            Hex_rbtn.Checked = true;


        }

        private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
       
        {
            if (this.serialPort1.IsOpen)
            {
                serialPort1.Close();
                Close_btn.Enabled = false;
                Open_btn.Enabled = true;
            }
 
            switch (comboBox3.SelectedIndex)
            {
                case 0:
                    serialPort1.Parity = Parity.None;
                    break;
                case 1:
                    serialPort1.Parity = Parity.Odd;
                    break;
                case 2:
                    serialPort1.Parity = Parity.Even;
                    break;
                default:
                    MessageBox.Show("请选择串口!");
                    break;
            }

        }

        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.serialPort1.IsOpen)
            {
                serialPort1.Close();
                Close_btn.Enabled = false;
                Open_btn.Enabled = true;
            }
 
            serialPort1.BaudRate = Convert.ToInt32(comboBox2.SelectedItem);
        }
        
        private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.serialPort1.IsOpen)
            {
                serialPort1.Close();
                Close_btn.Enabled = false;
                Open_btn.Enabled = true;
            }
 
            serialPort1.DataBits = Convert.ToInt16(comboBox4.SelectedItem);
        }

        private void comboBox5_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.serialPort1.IsOpen)
            {
                serialPort1.Close();
                Close_btn.Enabled = false;
                Open_btn.Enabled = true;
            }
 
            int stopd = Convert.ToInt16(comboBox5.SelectedValue);
            switch (stopd)
            {
                case 0:
                    serialPort1.StopBits = StopBits.One;
                    break;
                case 1:
                    serialPort1.StopBits = StopBits.Two;
                    break;
            }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.serialPort1.Close();
        }

        private void Close_btn_Click(object sender, EventArgs e)
        {
            this.serialPort1.Close();
            Close_btn.Enabled = false;
            Open_btn.Enabled = true;
        }

        private void Cl_btn_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Text.Length >  32760)
            {
                textBox1.Text = "";
            }
        }

       

        private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {
                serialPort1.Write(textBox2.Text);
            }
            catch
            {
                label1.Text = "发送失败!";
            }
            
        }
        
        private void Send_btn_Click(object sender, EventArgs e)
        {
            if(serialPort1.IsOpen)
            {
                if (Send_btn.Text == "发送")
                {
                    timer1.Start();
                    Send_btn.Text = "停止";
                }
                else
                {
                    timer1.Stop();
                    Send_btn.Text = "发送";
                }
            }
        
           else
            {
                label1.Text = "出口未打开!";
            }
        }

       
       

        
    }
}

--------------------编程问答-------------------- 看看窗体的Form1 .Designer.cs文件
命名空间,类名是不是和.cs里一致


--------------------编程问答-------------------- 还是不行
Form1 .Designer.cs文件:
namespace WindowsFormsApplication9
{
    public  partial class Form1
    {
        /// <summary>
        /// 必需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// 清理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows 窗体设计器生成的代码

        /// <summary>
        /// 设计器支持所需的方法 - 不要
        /// 使用代码编辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.SuspendLayout();
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(284, 262);
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            this.ResumeLayout(false);

        }

        #endregion
    }
}

--------------------编程问答-------------------- 一开始就叫你检查命名空间了
Form1.cs的命名空间是:namespace mycomserialport
Form1.Designer.cs的命名空间是:namespace WindowsFormsApplication9
修改成一致就行

补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,