для клиента чата я хочу создать новый экземпляр формы для каждого пользователя, который пишет личное сообщение, и проверить, есть ли у пользователя уже открытый экземпляр или нет, прежде чем создавать экземпляр.
Я пытался проверить это по словарю, но не смог заставить его работать..
Dim convs As New Dictionary(Of String, String)
Dim nf As New FrmDialog()
convs.Add(WritePUser, WritePMessage)
nf.Show()
If convs.ContainsKey(WritePUser) Then
MsgBox("im already open")
Else
nf.Show()
End If
ух, окей, я понимаю. в следующий раз буду внимательнее при публикации.





Трудно понять, находится ли опубликованный вами код в одном месте вашего приложения или в нескольких, но нет смысла объявлять и создавать Dictionary там, где вы его используете. Если вы это сделаете, вы будете каждый раз создавать новую Dictionary и никогда не сможете увидеть ранее созданные формы. Вам нужно создать его Dictionary и присвоить его полю, то есть переменной уровня класса. Затем вы используете этот единственный Dictionary каждый раз. Значения в Dictionary также должны быть формами, а не Strings, чтобы вы могли получить доступ к существующей форме. Вам также необходимо либо удалить формы из Dictionary, когда они закрываются, либо проверить, удалена ли существующая форма. Последнее, вероятно, является более простым вариантом.
Private dialoguesByUserName As New Dictionary(Of String, FrmDialog)
Затем:
Dim dialogue As FrmDialog
If Not dialoguesByUserName.TryGetValue(userName, dialogue) OrElse
dialogue.IsDisposed Then
'Either there is no existing form or the existing form has been closed.
dialogue = New FrmDialog
dialoguesByUserName[userName] = dialogue
dialogue.Show()
Else
'Focus the existing form.
dialogue.Activate()
End If
Теперь я заставил это работать, используя ваш пример и информацию, которую вы мне дали. большое спасибо и наилучшие пожелания!
@xeno, хотя я ценю это мнение, подобные комментарии на этом сайте не приветствуются. Голосование за и принятие ответов — это все, что требуется для подтверждения и благодарности.
Во-первых, просмотрите предварительный просмотр вашего вопроса и не отправляйте его, если форматирование некорректно. Сначала я просмотрел ваш вопрос на телефоне и, благодаря бессмысленному куче пробелов в начале, я смог прочитать ваш код, не прокручивая его в сторону. Не усложняйте чтение вашего вопроса без уважительной причины.