Dos funciones que hacen lo mismo te entregan el digito verificador. Solo tienes que adaptarlo a lo tuyo.
Código vb:
Ver originalPublic Class Rut
Private Sub Tb_rut_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Tb_rut.KeyPress
If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
e.Handled = True
Btn_consulta.Focus()
End If
If InStr(1, "0123456789" & Chr(8), e.KeyChar) = 0 Then
e.Handled = True
e.KeyChar = CChar("")
End If
End Sub
Private Sub Btn_consulta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_consulta.Click
Tb_rut.Text = Format(CInt(Tb_rut.Text), "00000000")
ComprobarRut()
End Sub
Sub ComprobarRut()
Dim elnumero = Tb_rut.Text
Dim Resultado As String = ""
Dim Multiplicador As Integer = 2
Dim iNum As Integer = 0
Dim Suma As Integer = 0
For i As Integer = 8 To 1 Step -1
iNum = CInt(Mid(elnumero, i, 1))
Suma += iNum * Multiplicador
Multiplicador += 1
If Multiplicador = 8 Then Multiplicador = 2
Next
Resultado = CStr(11 - (Suma Mod 11))
If Resultado = "10" Then Resultado = "K"
If Resultado = "11" Then Resultado = "0"
Tb_digito.Text = Resultado
Return
End Sub
Private Sub Btn_consulta2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_consulta2.Click
Tb_rut.Text = Format(CInt(Tb_rut.Text), "00000000")
RutDigito()
End Sub
Sub RutDigito()
Dim Rut As Integer = CInt(Tb_rut.Text)
Dim Digito As Integer
Dim Contador As Integer
Dim Multiplo As Integer
Dim Acumulador As Integer
Dim RutDigito As String
Contador = 2
Acumulador = 0
While Rut <> 0
Multiplo = (Rut Mod 10) * Contador
Acumulador = Acumulador + Multiplo
Rut = Rut \ 10
Contador = Contador + 1
If Contador = 8 Then
Contador = 2
End If
End While
Digito = 11 - (Acumulador Mod 11)
RutDigito = CStr(Digito)
If Digito = 10 Then RutDigito = "K"
If Digito = 11 Then RutDigito = "0"
Tb_digito.Text = RutDigito
End Sub
End Class
Saludos desde Chile.