Измените ваше TimerCouldNotBeStarted
событие на сервис, который вы добавили в DI. Затем разрешите службу в конструкторе Hubs и используйте ее в своих методах.
public class TimerHub : Hub
{
private readonly TimeService _timer;
public TimerHub(TimerService timer)
{
_timer = timer;
}
Task TimerStatusUpdate(string message)
{
switch (message)
{
case "Timer could not be started.":
_timer.OnTimerCouldNotBeStarted(EventArgs.Empty); // Raise event
break;
}
return Clients.All.SendAsync("EditionStatusUpdate", message);
}
}
DataGridView.SelectedCells
набор ячеек, таким образом, это не столь просто как вызов ToString()
на нем. Необходимо циклично выполниться через каждую ячейку в наборе и получить значение каждой ячейки вместо этого.
Следующее создаст разграниченный запятой список значений всех выбранных ячеек.
C#
TextBox1.Text = "";
bool FirstValue = true;
foreach(DataGridViewCell cell in DataGridView1.SelectedCells)
{
if(!FirstValue)
{
TextBox1.Text += ", ";
}
TextBox1.Text += cell.Value.ToString();
FirstValue = false;
}
VB.NET (Переведенный из кода выше)
TextBox1.Text = ""
Dim FirstValue As Boolean = True
Dim cell As DataGridViewCell
For Each cell In DataGridView1.SelectedCells
If Not FirstValue Then
TextBox1.Text += ", "
End If
TextBox1.Text += cell.Value.ToString()
FirstValue = False
Next
Или в случае, если Вам просто нужно значение первого seleted, продают (или всего одна выбранная ячейка, если Вы выбраны),
TextBox1.Text = SelectedCells[0].Value.ToString();
В этом конкретном случае ToString () возвратит название объекта, возвращенного Свойством SelectedCell. (набор в настоящее время выбранных ячеек).
Это поведение происходит, когда объект не имеет никакого определенного implenetation для ToString () методы.
в нашем случае все, что необходимо сделать, должно выполнить итерации набора ячеек и накапливать его значения до строки. затем продвиньте эту строку к TextBox.
взгляните здесь, как реализовать повторение:
Попробуйте следующее:
Dim i = Datagridview1.currentrow.index
textbox1.text = datagridview1.item(columnindex, i).value
Это должно сработать :)
Лучшее из обоих миров .....
Private Sub tsbSendNewsLetter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbSendNewsLetter.Click
Dim tmpstr As String = ""
Dim cnt As Integer = 0
Dim virgin As Boolean = True
For cnt = 0 To (dgvDetails.Rows.Count - 1)
If Not dgvContacts.Rows(cnt).Cells(9).Value.ToString() Is Nothing Then
If Not dgvContacts.Rows(cnt).Cells(9).Value.ToString().Length = 0 Then
If Not virgin Then
tmpstr += ", "
End If
tmpstr += dgvContacts.Rows(cnt).Cells(9).Value.ToString()
virgin = False
'MsgBox(tmpstr)
End If
End If
Next
Dim email As New qkuantusMailer()
email.txtMailTo.Text = tmpstr
email.Show()
End Sub