我正在嘗試將一些第三方 C# 示例代碼合并到我的程式中。第三方代碼是掃描 COM 埠上的設備的 WinForms NET 4.6.2 應用程式的一部分。
就我而言,我想在方法中插入一行(或兩行)代碼private static void PortStatusCallback()。我添加的代碼旨在用PortStatusCallback(). 完整的方法如下;我建議的添加是單行myPortname.Text = portname;。此添加回傳錯誤訊息非靜態欄位、方法或屬性“Form1.myPortname”需要物件參考
請任何人都可以建議一種從靜態方法訪問欄位的方法嗎?我是 C# 編程的新手,所以如果您能幫我寫出代碼,我將不勝感激。謝謝你。
private DLL.PortStatusCallbackFuncPtr _PortStatusInstance = new DLL.PortStatusCallbackFuncPtr(PortStatusCallback); // Allocated to prevent garbage collection
private static void PortStatusCallback([MarshalAs(UnmanagedType.LPStr)] String portname, DLL.PortStatusTypes status, byte curScanAdr, byte maxScanAdr, byte foundType)
{
string statusMsg = "\r\nPortInfo Callback: " portname " status:" status.ToString() " curScanAdr:" curScanAdr.ToString() " maxScanAdr:" maxScanAdr.ToString() " foundType:" foundType.ToString("X2");
myPortname.Text = portname; // this line is added by me and throws up a CS0120 error.
MyStatusBox.Invoke((MethodInvoker)delegate () { MyStatusBox.AppendText(statusMsg); });
Console.Write(statusMsg);
}
uj5u.com熱心網友回復:
此答案假定您的Form1類代表您的應用程式的主要形式;該類的一個實體是在 Program.cs 中創建的,沒有其他實體被創建,并且當您關閉表單時,應用程式就會消失(即典型的 WinForms 應用程式)。
創建半私有財產:
Private static Form1 CurrentForm { get; private set; }
在 Form1 建構式(或Load處理程式)中,執行以下操作:
CurrentForm = this;
現在,運算式Form1.CurrentForm將決議為您的主表單(從應用程式中的任何位置)。
最后將您出錯的行更改為:
CurrentForm.myPortname.Text = portname;
uj5u.com熱心網友回復:
嘗試像這樣使用靜態修飾符:
private static DLL.PortStatusCallbackFuncPtr _PortStatusInstance = new DLL.PortStatusCallbackFuncPtr(PortStatusCallback); // Allocated to prevent garbage collection
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/407600.html
標籤:
下一篇:安裝后系結重定向不應用
