Tôi có một ứng dụng trong C# .net có MainForm và một vài lớp.
Một trong các lớp này nhận được thông báo dữ liệu đến từ mạng.
Tôi cần nhận được văn bản của tin nhắn này được thêm vào một hộp văn bản nhiều dòng trên MainForm.
Tôi có thể gửi thư đến một phương thức trong MainForm bằng cách đặt phương thức tĩnh, nhưng sau đó phương thức tĩnh không thể truy cập các điều khiển của MainForm.Trong C# .net, Làm thế nào để truy cập một điều khiển từ một phương pháp tĩnh?
TheIncomingDataClass.cs
namespace TheApplicationName
{
class TheIncomingDataClass
{
public void IncomingMessage(IncomingMessageType message)
{
TheApplicationName.MainForm.ReceiveMSG(message);
}
MainForm.cs
public static void ReceiveMSG(string message)
{
txtDisplayMessages.AppendText(message); //This line causes compile error
}
Các lỗi biên dịch:
Một tham chiếu đối tượng là cần thiết cho TheApplicationName.MainForm.txtDisplayMessages không tĩnh lĩnh vực, phương pháp, hoặc tài sản' '
Mọi trợ giúp đều được đánh giá cao.
Tôi vẫn là người mới bắt đầu C# vì vậy hãy mô tả.
Khi tôi xóa từ khóa tĩnh khỏi phương thức tôi không thể gọi nó từ Lớp IncomingData nữa. Tôi không hiểu ý bạn là gì bởi "được gọi bởi trường hợp cụ thể của đối tượng đó" bạn có thể giải thích thêm?hãy nhớ rằng tôi cần những tin nhắn này để được gửi đến hộp văn bản ngay lập tức khi nhận được chúng, vì vậy sự kiện sẽ là nhận được tin nhắn. Cảm ơn. – timmyg
Tôi giả sử vì nó là tĩnh mà bạn đã gọi nó với MainForm. ReceiveMSG() [hoặc chỉ ReceiveMSG()]. Nó sẽ phải được gọi từ một thể hiện cụ thể của MainForm, (MainForm mf = new MainForm(); hoặc tương tự, để tạo ra một instnance). Sau đó, bạn có thể gọi nó là mf. ReceiveMSG(), thay thế mf bằng bất cứ thứ gì bạn đặt tên cho thể hiện của MainForm. Không có hành vi phạm tội, nhưng tôi nghĩ bạn cần đọc một số tài liệu ngôn ngữ bất khả tri về định hướng đối tượng, tìm hiểu ý nghĩa của tất cả điều này, và sau đó xem cách cú pháp C# liên quan đến nó như thế nào. – Annath
Nghiêm túc, bạn nên lấy CLR Via C#. Nó dễ đọc (SKIP THE FIRST COUPLE OF CHAPTERS) và đi vào chi tiết tốt về điều này và hơn thế nữa! – Will