[英]Cannot implicitly convert type 'object' to 'int'. An explicit conversion exists (are you missing a cast?)
[英]Cannot implicitly convert type 'object' to 'int'. An explicit conversion error exists
我的代碼顯示了 5 個錯誤。 錯誤說,
錯誤 1 'System.Windows.Forms.ComboBox.ObjectCollection.AddRange(object[])' 的最佳重載方法匹配有一些無效參數
錯誤 2 參數 1:無法從“System.Array”轉換為“object[]”
錯誤 3 無法將方法組“ReadExisting”轉換為非委托類型“float”。 您是否打算調用該方法?
錯誤 4 無法將類型“object”隱式轉換為“int”。 存在顯式轉換(您是否缺少演員表?)
錯誤 5 無法將類型“對象”隱式轉換為“字符串”。 存在顯式轉換(您是否缺少演員表?)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private void Form2(object sender, EventArgs e)
{
this.CenterToParent();
BtnCon.Enabled = false;
BtnCon.BringToFront();
BtnDiscon.Enabled = false;
BtnDiscon.SendToBack();
cmbBaud.SelectedItem = "9600";
}
private void BtnScanPort_Click(object sender, EventArgs e)
{
CmbPort.Items.Clear();
Array myPort;
int i;
myPort = System.IO.Ports.SerialPort.GetPortNames();
CmbPort.Items.AddRange(myPort);
i = CmbPort.Items.Count;
i = i - i;
try
{
CmbPort.SelectedIndex = i;
}
catch (Exception ex)
{
DialogResult result;
result = MessageBox.Show("com port not detected", "Warning !!!", MessageBoxButtons.OK);
CmbPort.Text = "";
CmbPort.Items.Clear();
Form2(this, e);
}
BtnCon.Enabled = true;
BtnCon.BringToFront();
CmbPort.DroppedDown = true;
}
private void cmbPort_SelectedIndexChanged(object sender, EventArgs e){}
private void label2_Click(object sender, EventArgs e){}
private void Timer1_Tick(object sender, EventArgs e)
{
try
{
float i = serialPort1.ReadExisting;
LblValue.Text = "Value : " + i.ToString();
}
catch (Exception ex){}
}
private void BtnCon_Click(object sender, EventArgs e)
{
BtnCon.Enabled = false;
BtnCon.SendToBack();
serialPort1.BaudRate = cmbBaud.SelectedItem;
serialPort1.PortName = CmbPort.SelectedItem;
serialPort1.Open();
Timer1.Start();
BtnDiscon.Enabled = true;
BtnDiscon.BringToFront();
}
private void BtnDiscon_Click(object sender, EventArgs e)
{
BtnDiscon.Enabled = false;
BtnDiscon.SendToBack();
Timer1.Stop();
serialPort1.Close();
BtnCon.Enabled = true;
BtnCon.BringToFront();
}
}
}
需要糾正這些錯誤。
第一個錯誤是因為這個: Array myPort;
. 這不是您聲明數組的方式, Array
是一個抽象類,它提供了對數組進行操作的方法。 SerialPort.GetPortNames()
返回一個字符串數組,因此您可以聲明一個字符串數組或僅刪除Array myPort;
聲明並將另一行替換為
var myPort = System.IO.Ports.SerialPort.GetPortNames();
.
下一個問題是float i = serialPort1.ReadExisting;
,這是一種方法,因此您必須調用它,即serialPort1.ReadExisting()
。 我認為該方法具有字符串的返回類型,因此您也不需要將其設為浮點數,看起來您無論如何都將它用作下一行中的字符串,因此i
不必是浮點數。
其他錯誤是因為您試圖將組合框所選項目分配給 int 和 string 值,但所選項目是一個對象,您必須將其轉換為所需的類型,例如
serialPort1.BaudRate = (int)cmbBaud.SelectedItem;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.