wlasne kontrolki

0

Witam,
Mam taki problem, stworzylem sobie kontrolke zawierajaca pola tekstowe i przyciski.
W oknie głównym mam umieszczone rozne kontrolki miedzy innymi ListView i moją kontrolke opisana wyzej.
Chce teraz zeby np. po kliknieciu w mojej kontrolce danego przycisku mialo to wplyw na kontrolke ListView.
Tyle ze gdy w klasie kontrolki ktora stworzylem nie mam dostepu do innych kontrolek. Wiec pytanie brzmi:
Jak zrobic zebym klikajac w przycisk kontrolki (czyli zdarzenie OnClick, mial dostep do innych kontrolek)?

0

Stworz sobie prywatna zmienna ListView. Nastepnie do niej publiczny properties, ktory przypisuje ja i pobiera. np tak:

ListView listView;
public ListView AttachedListView
{
get { return this.listView; }
set { this.listView = value; }
}

nastepnie podczas tworzenia formy przypisz propertisowi odpowiednia wartosc.
np. this.myCustomControl.AttachedListView = this.listView1;

Wewnatrz kodu klasy bedziesz wtedy mogl operowac na powiazanym listview

0

W form1.Designer.cs

public System.Windows.Forms.ListView listView1;
private mojaKontrolka mojaKontrolka1;

W form1.cs

public Form1()
{
InitializeComponent();
this.wListView1 = this.listView1;
}
public ListView wListView1
{
get { return this.listView1; }
set { this.listView1 = value; }
}

w mojaKontrolka.cs

private void button1_Click(object sender, EventArgs e)
{
// tutaj chce np dodac jakis item do listView1... ale nadal nie mam dostepu do kontrolek, chce miec
// dostep do jakiejkolwiek funkcji w form1.cs
}

0

propertisa i zmienna ListView umieszczasz w mojaKontrolka.cs
i po inicjalizacji komponentow dajesz
this.mojaKontrolka.wLisView1 = this.listView1

pozniej w button clicku po prostu korzystasz z this.listView1

0

Jesli dobrze zrozumialem to wtedy bede miec w kontrolce mojaKonkrolka listView dokladnie taka sama jak w form1, a ja chce miec dostep do tej w form1 ... chce miec dostep do jakiejs fukcji w form1 a ona juz zalatwi reszte...

0

w mojaKontrolka.cs

class MojaKontrolka
{
    private ListView listView = null; //tu będziesz trzymać referencje do kontrolki z form1
    public ListView ListView { set { listView = value; } } //publiczny akcesor umożliwiający przypisanie tej referencji

    private void button1_Click(object sender, EventArgs e)
    {
        if(listView != null) //sprawdzasz, czy jest przypisany jakiś ListView 
        {
            listView./*...*/; //wykonujesz coś na ListView
        }
    }
//...

W form1.cs

class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        //załóżmy że twoja kontrolka nazywa się 'mojaKontrolka', a ListView na formie nazywa się 'ListView1'
        mojaKontrolka.ListView = this.ListView1; //przypisujesz twojej kontrolce referencje do ListView z formy wykorzystując publiczny akcesor, teraz w 'mojaKontrolka.listView' będzie ta sama referencja co w 'this.ListView1'
    }
//...
0

Wielkie dzieki, bardzo mi pomogles! :)

0

Ok jeszcze jedno,
sytuacja analogiczna ale chce z poziomu kontrolki wywolac funkcje znajdujaca sie w Form, jak to zrobic?

0

jeśli kontrolka leży na formie bezpośrednio to możesz wywołać jej parenta i wtedy funkcję, którą chcesz. Jeśli nie leży bezpośrednio, to kilka razy parenta, aż dojdziesz do formatki.

0

czy moglbys podac przyklad w kodzie?

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