Как я могу вызвать событие GUI в WCF? - PullRequest
0 голосов
/ 18 апреля 2019

Предположим, я хочу добавить кнопку в клиент WinFms WCF таким образом, чтобы всякий раз, когда пользователь нажимал кнопку, конкретный клиент на другой стороне видел MessageBox, говорящий Hello [user] .

enter image description here

Я изменил эту программу , чтобы иметь DataGridView вместо большого TextBox.Я также попытался вызвать событие при двойном щелчке строки DataGridView.

Я сделал что-то вроде следующего:

[ServiceContract(SessionMode = SessionMode.Allowed)]
public interface ICallableForm
{
    [OperationContract]
    void ShowMessage();
}

[DataContract]
public class ChatUser
{
    //...

    [DataMember]
    public ICallableForm WinForm { get; set; }

    public override string ToString()
    {
        return this.Username;
    }
}

class MainForm : Form, ICallableForm
{
    // ...
    public void ShowMessage()
    {
        MessageBox.Show("Hello " + ___clientUser.Username);
    }
    // ...

   private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
    {
        int rowIndex = e.RowIndex;

        ChatMessage message = dataGridView1.Rows[rowIndex+1].Tag as ChatMessage;

        ChatUser user = message.User;

        ICallableForm form = user.WinForm;

        form.ShowMessage();

        string str = string.Empty;
    }

И получил следующую ошибку:

enter image description here

enter image description here


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...