Предположим, я хочу добавить кнопку в клиент WinFms WCF таким образом, чтобы всякий раз, когда пользователь нажимал кнопку, конкретный клиент на другой стороне видел MessageBox
, говорящий Hello [user] .
Я изменил эту программу , чтобы иметь 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;
}
И получил следующую ошибку: