Veta vilken TextBox som är aktiv
Hej
I mitt formulär har ett antal Texboxar(30 st) som skall innehålla liknande värde.
Jag undrar om man kan göra en händelse så att jag får reda på textboxens namnegenskap eller vilken textbox som användaren har klickat.
MVH / Stefan H
Svara
Sv: Veta vilken TextBox som är aktiv
Du kan t.ex använda "Enter" och "Leave" händelserna för TextBoxarna.
Enklast är det nog om du först skapar dessa två metoder
<code>
private void textBox_Enter(object sender, EventArgs e)
{
}
private void textBox_Leave(object sender, EventArgs e)
{
}
</code>
Sen kan du markera alla dina textboxar, öppna Properties och välj ikonen Events och där finns "Enter och Leave" under gruppen Focus och där väljer du respektive metod enligt ovan.
Ett litet exempel med 3 TextBoxar i ett formulär.
<code>
using System;
using System.Windows.Forms;
using System.Diagnostics;
namespace WindowsApplication1
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
this.textBox1.Leave += new System.EventHandler(this.textBox_Leave);
this.textBox1.Enter += new System.EventHandler(this.textBox_Enter);
this.textBox2.Leave += new System.EventHandler(this.textBox_Leave);
this.textBox2.Enter += new System.EventHandler(this.textBox_Enter);
this.textBox3.Leave += new System.EventHandler(this.textBox_Leave);
this.textBox3.Enter += new System.EventHandler(this.textBox_Enter);
}
private void textBox_Enter(object sender, EventArgs e)
{
try
{
TextBox aTextBox = (TextBox)sender;
Debug.WriteLine(String.Format("Enter textbox {0} som innehåller texten \"{1}\" ", aTextBox.Name, aTextBox.Text));
}
catch (Exception ex)
{
Debug.WriteLine(String.Format("Error: {0}.", ex.Message));
}
}
private void textBox_Leave(object sender, EventArgs e)
{
try
{
TextBox aTextBox = (TextBox)sender;
Debug.WriteLine(String.Format("Lämnar textbox {0} som innehåller texten \"{1}\"", aTextBox.Name, aTextBox.Text));
}
catch (Exception ex)
{
Debug.WriteLine(String.Format("Error: {0}.", ex.Message));
}
}
}
}
</code>
Svara
Sv:Veta vilken TextBox som är aktiv
Hej Jan!
Jag tackar för ditt inlägg.
Nu använder jag Vb.Net, så jag undrar om det går att konventera koden du skrivit.
MVH/ Stefan H
Svara
Sv: Veta vilken TextBox som är aktiv
Borde bli något åt detta håll:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | Imports System Imports System.Windows.Forms Imports System.Diagnostics Namespace WindowsApplication1 Public Partial Class Form3 Inherits Form Public Sub New () InitializeComponent() AddHandler Me .textBox1.Leave, AddressOf textBox_Leave AddHandler Me .textBox1.Enter, AddressOf textBox_Enter AddHandler Me .textBox2.Leave, AddressOf textBox_Leave AddHandler Me .textBox2.Enter, AddressOf textBox_Enter AddHandler Me .textBox3.Leave, AddressOf textBox_Leave AddHandler Me .textBox3.Enter, AddressOf textBox_Enter End Sub Private Sub textBox_Enter( ByVal sender As Object , ByVal e As EventArgs) Try Dim aTextBox As TextBox = DirectCast (sender, TextBox) Debug.WriteLine([ String ].Format( "Enter textbox {0} som innehåller texten " "{1}" " " , aTextBox.Name, aTextBox.Text)) Catch ex As Exception Debug.WriteLine([ String ].Format( "Error: {0}." , ex.Message)) End Try End Sub Private Sub textBox_Leave( ByVal sender As Object , ByVal e As EventArgs) Try Dim aTextBox As TextBox = DirectCast (sender, TextBox) Debug.WriteLine([ String ].Format( "Lämnar textbox {0} som innehåller texten " "{1}" "" , aTextBox.Name, aTextBox.Text)) Catch ex As Exception Debug.WriteLine([ String ].Format( "Error: {0}." , ex.Message)) End Try End Sub End Class End Namespace |
Lycka till!
Mvh,
Thomas
Svara
Sv: Veta vilken TextBox som är aktiv
Ursäkta för det där med C#, jag missade att det var i VB.Net forumet du ställde frågan men hoppas det löser sig med Thomas översättning
Svara
Sv:Veta vilken TextBox som är aktiv
Konvertera lätt med : http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx
Svara
Sv:Veta vilken TextBox som är aktiv
Hej
Tack för alla svar
Jag har bara en fråga. Måsta man lägga till alla textboxarna i subben New()
Med koden "AddHandler Me.textBox1.Leave, AddressOf textBox_Leave"
Vad jag förstår så funkar det med en addhandler på en textbox, så funkar dom andra Texboxarna oxå.
Eller är det fel att göra så ?
Än en gån tack för hjälpen.
MVH/ Sefan H
Svara
Sv: Veta vilken TextBox som är aktiv
Enklast att få med alla textboxar är nog att göra så här, förutsatt antt du använder Visual Studio.
1. Skapa dina metoder enligt nedan
<code>
Private Sub textBox_Leave(ByVal sender As Object, ByVal e As EventArgs)
{
//Koden kan du komplettera med senare
}
Private Sub textBox_Enter(ByVal sender As Object, ByVal e As EventArgs)
{
//Koden kan du komplettera med senare
}
<code>
2.Öppna ditt formulär
3.Öppna properties (F4)
4.Markera alla aktuella textboxar i ditt formulär
5.Klicka på Events-ikonen (Blixten) i properites
6.I properties/Events expandera gruppen Focus
7.Öppna dropdown för Enter och välj metoden textBox_Enter
8.Nu ska alla dina textboxars Enter-event kopplats till metoden textBox_Enter
Svara
Sv:Veta vilken TextBox som är aktiv
Hej
Nu har jag fått det att funka.
Jag tackar än en gång alla för svaren
/Stefan H
Svara