[.Net1.1] C# TextBox wyświetlane cyfry

0

Witam,
Mam problem z wyświetleniem w TextBox.Text liczby w formacie 0001, 0002 itp. pobieranej z tablicy Access, gdzie jest wpisana jak podałem na przykładzie. Chodzi mi o to by zawsze wyświetlana liczba była 4-cyfrowa i zera mają ją uzupełniać. Muszę niestety korzystać VS 2003 C# i nie mogę znaleŹć takiej właściwości. program zawsze obcina mi początkowe zera i zostawia cyfry powyżej 0

0

Najprościej chyba byłoby if'ami. Jeżeli Length = 1 to dostawiasz 000 w samym ustawianiu tekstu textboxa i analogicznie dla innych.
Pozdrawiam, Wronq

0

Ifami?

csharp napisał(a)

this.textBox1.Text = liczba.ToString("0000");

Nie wystarczy?

0

Albo

textBox1.Text = liczba.ToString("D4");

wersja VS tu nic nie szkodzi, takie rzeczy były od samego początku.

0

Dziękuję Wszystkim za poradę, ale nie wyraziłem się jasno, podane przez Was rozwiązanie działa prawidłowo przy wprowadzaniu danych w TextBox, a ja potrzebuję wyświetlić pobierane dane z tablicy zachowując odpowiedni format. Zaznaczam, że nie jestem zaawansowanym programistą, podaję poniżej kod na szukanie w tablicy, interesuje mnie TextBox4:
public void Szukanie()
{
try
{
OleDbCommand command = oleDbConnection1.CreateCommand();
command.CommandType = CommandType.Text;
command.CommandText = "SELECT * FROM [ŁD Analogowe_8101] WHERE Typ like '%" + textBox2.Text + "%' and Symbol like '%" + textBox3.Text + "%' and Numer like '%" + textBox4.Text + "%' and Inicjaly like '%" + textBox5.Text + "%' and Podstawa Like '%" + textBox6.Text + "%' and Relacja like '%" + textBox8.Text + "%' and [Nazwa Klienta] like '%" + textBox9.Text + "%' and [Segment Klienta] like '%" + comboBox1.Text + "%' and [Rodzaj lacza] like '%" + comboBox2.Text + "%' and [Login mod] like '%" + label10.Text + "%' and [Data mod] like '%" + label11.Text + "%'";
OleDbDataAdapter da = new OleDbDataAdapter();
da.SelectCommand = command;
da.TableMappings.Add("Table","[ŁD Analogowe_8101]");
ds = new DataSet();
da.Fill(ds, "[ŁD Analogowe_8101]");
DataTable dataTable = ds.Tables[0];
statusBar1.Text = "Znaleziono Rekordów: " + ds.Tables[0].Rows.Count.ToString();
oleDbConnection1.Open();
OleDbDataReader reader;
reader = command.ExecuteReader();
{
textBox1.DataBindings.Add("Text", ds.Tables[0], "Znak");
textBox2.DataBindings.Add("Text", ds.Tables[0], "Typ");
textBox3.DataBindings.Add("Text", ds.Tables[0], "Symbol");
textBox4.DataBindings.Add("Text", ds.Tables[0], "Numer");
textBox5.DataBindings.Add("Text", ds.Tables[0], "Numer");
textBox6.DataBindings.Add("Text", ds.Tables[0], "Podstawa");
textBox7.DataBindings.Add("Text", ds.Tables[0], "Data");
textBox8.DataBindings.Add("Text", ds.Tables[0], "Relacja");
textBox9.DataBindings.Add("Text", ds.Tables[0], "Nazwa Klienta");
comboBox1.DataBindings.Add("Text",ds.Tables[0], "Segment Klienta");
comboBox2.DataBindings.Add("Text",ds.Tables[0], "Rodzaj lacza");
label10.DataBindings.Add("Text",ds.Tables[0], "Login mod");
label11.DataBindings.Add("Text",ds.Tables[0], "Data mod");
}
catch
{
}
oleDbConnection1.Close();
}

0

spróbuj w taki sposób ustawić binding.

textBox4.DataBindings.Add("Text", ds.Tables[0], "Numer", true, System.Windows.Forms.DataSourceUpdateMode.OnValidation, "0000", "D4");
0

VS 2003 nie rozumie fragmentu System.Windows.Forms.DataSourceUpdateMode.OnValidation i wyświetla błąd o zbyt dużej liczbie argumentów

0

Rzeczywiście Framework 1.1 nie ma tej wersji metody Add. Ale Add zwraca obiekt typu Binding, który ma zdarzenie Format:
http://msdn.microsoft.com/en-us/library/system.windows.forms.binding.format(VS.71).aspx

0

Dzięku za link, ale z tego co zrozumiałem tam pokazana jest konwersja typów, jak mam na podstawie tego uzupełnić zerami brakujące znaki z przodu???

0

Konwersję typu z zerami na początku miałeś już w tym wątku w dwóch równoważnych wariantach.

0

Zgadza się, ale to konwersja działająca przy wprowadzaniu danych, a Ja potrzebuję przy pobieraniu

0

Zrealizowałem, podaję rozwiązanie. Dzięki za zainteresowanie

private void IntToCurrencyString(object sender, ConvertEventArgs cevent)
{// The method converts only to string type. Test this using the DesiredType.
if(cevent.DesiredType != typeof(string)) return;
cevent.Value = ((int)cevent.Value).ToString("D8");
}
private void BindControl()
{// Creates the binding first. The OrderAmount is a Decimal type.
Binding b = new Binding("Text", ds.Tables[0], "Numer");
b.Format += new ConvertEventHandler(IntToCurrencyString);
label14.DataBindings.Add(b);
textBox4.Text = label14.Text.Remove(4,4);
textBox5.Text = label14.Text.Remove(0,4);
}
Następnie wywiłujemy funkcję BindControl()
pozdrawim
grotom
:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1