C# Komunikace mezi Forms aneb proč vyskakuje "Object reference not set to an instance of an object"

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Odpovědět
Uživatelský avatar
Skelller
Level 2
Level 2
Příspěvky: 222
Registrován: 03 črc 2014 12:20
Bydliště: Opava

C# Komunikace mezi Forms aneb proč vyskakuje "Object reference not set to an instance of an object"

Příspěvek od Skelller »

Zdravím, mám velký problém. Snažím se, aby vybraný item v list boxu ve Form2, přenesl svůj text do textBoxu ve Form1. Ovšem ať to zkouším jakýmkoliv způsobem, tak to prostě nejde.. přikladám kod, ve kterém to házi chybu, díky moc :)

Vyjmutý kod z Formu, kde je listBox

Kód: Vybrat vše

private Form1 mainForm = null;
        public Form2(Form1 callingFrom)
        {
            mainForm = callingFrom as Form1;
            InitializeComponent();
        }
        private void okButton_Click(object sender, EventArgs e)
        {
            this.mainForm.udaje = bankovniUctyList.GetItemText(bankovniUctyList.SelectedItem);
            this.Close();
        }


Vyjmutý kod z Formu, kde je textBox

Kód: Vybrat vše

public string udaje
        {
            get { return predmetBanka.Text; }
            set { predmetBanka.Text = value; bankaTextBox.Text = predmetBanka.Text; }
        }
Notebook Acer Aspire E15 E5-571G-57N2
==========================
Procesor: Intel i5-5200U
Grafika: NVIDIA GeForce GT840M
RAM: 8GB DDR3
Oxxid
člen BSOD týmu
Příspěvky: 6194
Registrován: 07 pro 2012 19:16

Re: C# Komunikace mezi Forms aneb proč vyskakuje "Object reference not set to an instance of an object"

Příspěvek od Oxxid »

Chapu dobre, ze ti jde pouze o prenos dat mezi dvema formulari?
Uživatelský avatar
Skelller
Level 2
Level 2
Příspěvky: 222
Registrován: 03 črc 2014 12:20
Bydliště: Opava

Re: C# Komunikace mezi Forms aneb proč vyskakuje "Object reference not set to an instance of an object"

Příspěvek od Skelller »

Prozatím ano. Chyba je, že prý v řádku

Kód: Vybrat vše

this.mainForm.udaje = bankovniUctyList.GetItemText(bankovniUctyList.SelectedItem);
je "udaje" null.. tím pádem to hodí chybu..ani na stack overflow mi neumí poradit
Notebook Acer Aspire E15 E5-571G-57N2
==========================
Procesor: Intel i5-5200U
Grafika: NVIDIA GeForce GT840M
RAM: 8GB DDR3
Oxxid
člen BSOD týmu
Příspěvky: 6194
Registrován: 07 pro 2012 19:16

Re: C# Komunikace mezi Forms aneb proč vyskakuje "Object reference not set to an instance of an object"

Příspěvek od Oxxid »

Nepouzivej safe cast, ale direc. Na komunikaci mezi formulari pouzivej nejlepe eventy (udalosti).

Dodatečně přidáno po 35 minutách :


Tady mas ukazku. Ten zbytek s datalistem si tam domaluj.

Form1.xaml.cs

Kód: Vybrat vše

using System.Windows;

namespace WpfApplication
{
    /// <summary>
    ///     Interaction logic for Form1.xaml
    /// </summary>
    public partial class Form1 : Window
    {
        private string _str;

        public string Str
        {
            get { return _str; }
            set
            {
                _str = value;
                StrTextBlock.Text = value;
            }
        }

        public Form1()
        {
            InitializeComponent();
            Form2 form2 = new Form2(this);
            form2.Show();
        }
    }
}


Form1.xaml.cs

Kód: Vybrat vše

using System.Windows;
using System.Windows.Controls;

namespace WpfApplication
{
    /// <summary>
    ///     Interaction logic for Form2.xaml
    /// </summary>
    public partial class Form2 : Window
    {
        private Window CallingInstance { get; }

        public Form2()
        {
            InitializeComponent();
        }

        public Form2(Window callingInstance) : this()
        {
            this.CallingInstance = callingInstance;
        }

        private void AButton_Click(object sender, RoutedEventArgs e)
        {
            DoStuff((Button) sender);
           
        }

        private void BButton_Click(object sender, RoutedEventArgs e)
        {
            DoStuff((Button) sender);
        }

        private void DoStuff(Button sender)
        {
            Form1 form1Instance = (Form1)this.CallingInstance;
            form1Instance.Str = sender.Content.ToString();
        }
    }
}
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Problémy v síti na obrázku - proč nemůžou počítače komunikovat mezi sebou
    od zuzana3 » » v Administrace sítě
    7 Odpovědi
    9404 Zobrazení
    Poslední příspěvek od zuzana3
  • proč nb nebere boot antivir
    od Stenatko » » v Vše ostatní (bezp)
    5 Odpovědi
    23143 Zobrazení
    Poslední příspěvek od Stenatko

Zpět na „Programování a tvorba webu“