{"id":1439,"date":"2020-05-03T22:33:16","date_gmt":"2020-05-03T20:33:16","guid":{"rendered":"http:\/\/www.daniel.slask.pl\/?p=1439"},"modified":"2021-02-09T21:47:10","modified_gmt":"2021-02-09T20:47:10","slug":"tworzenie-tabeli-przy-uzyciu-textboxa-2","status":"publish","type":"post","link":"https:\/\/daniel.slask.pl\/m\/tworzenie-tabeli-przy-uzyciu-textboxa-2\/","title":{"rendered":"Tworzenie tabeli przy u\u017cyciu textboxa &#8211; #2"},"content":{"rendered":"\n<p><em><strong><span style=\"text-decoration: underline;\">Kr\u00f3tki opis ca\u0142ego programu:<\/span><\/strong><\/em> Program do dynamicznego tworzenia tablicy z <em>TextBox<\/em>&#8217;\u00f3w o zadanej ilo\u015bci kom\u00f3rek, wraz z mo\u017cliwo\u015bci\u0105 zmiany niekt\u00f3rych w\u0142a\u015bciwo\u015bci wybranych kom\u00f3rek.<\/p>\n\n\n\n<p><strong><em><span style=\"text-decoration: underline;\">Co tym razem:<\/span><\/em><\/strong> Tablica tworzona w osobnym panelu z&nbsp; mo\u017cliwo\u015bci\u0105 przewijania tego panelu<\/p>\n\n\n\n<p><a href=\"http:\/\/www.daniel.slask.pl\/?p=1412\">Ostatnio <\/a>uda\u0142o nam si\u0119 utworzy\u0107 tabel\u0119 ze zmienn\u0105 szeroko\u015bci\u0105 kom\u00f3rek. Tylko co si\u0119 dzieje jak wpiszemy np 100 kom\u00f3rek i 2 wiersze?<\/p>\n\n\n\n<figure class=\"wp-block-gallery aligncenter columns-2 wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-2-150x150.png\" alt=\"\" data-id=\"1455\" data-full-url=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-2.png\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1455\" class=\"wp-image-1455\"\/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-1-150x150.png\" alt=\"\" data-id=\"1456\" data-full-url=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-1.png\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1456\" class=\"wp-image-1456\"\/><\/a><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p>Tabela przekracza obszar formatki. Tym razem tak zmodyfikujemy program, aby mo\u017cliwe by\u0142o przewijanie naszej tabeli <em>scrollem<\/em>. W pierwszej kolejno\u015bci dodamy panel w kt\u00f3rym b\u0119dziemy umieszcza\u0107 nasz\u0105 tabel\u0119 &#8211; przenosimy j\u0105 na nasz\u0105 formatk\u0119 i rozci\u0105gamy do odpowiedniej wielko\u015bci. A jak umie\u015bci\u0107 dynamicznie tabel\u0119 w tym panelu? Sprawd\u017amy jak program <em>Visual Studio<\/em> umieszcza kontrolki w tym panelu. Dodajmy na ten panel przycisk i nazwijmy go jak\u0105\u015b dowoln\u0105 nazw\u0105 tak \u017ceby si\u0119 wyr\u00f3\u017cnia\u0142a ona, \u0142atwiej nam b\u0119dzie j\u0105 odszuka\u0107. Nast\u0119pnie przejd\u017amy do kodu programu w kt\u00f3rym tworzone s\u0105 kontrolki &#8211; otwieramy plik<em> Form1.Designer.cs<\/em> z drzewa projektu. W nim szukamy konfiguracji naszej kontrolki.<\/p>\n\n\n\n<p>W pierwszej cz\u0119\u015bci umieszczana jest kontrolka na panelu poprzez odniesienie si\u0119 do tego panelu. Natomiast w drugiej cz\u0119\u015bci konfigurowana jest ta kontrolka, ale ju\u017c bez odniesienia do naszego panelu. To ju\u017c wiemy jak zmodyfikowa\u0107 program. Ale zobaczmy jeszcze na punkt w kt\u00f3rym rozpoczyna si\u0119 rysowanie samej kontrolki przycisku. Jest tutaj niska warto\u015b\u0107 punktu pocz\u0105tkowego sprawd\u017amy to &#8211; przejd\u017amy do okna projektowego. We w\u0142a\u015bciwo\u015bciach przycisku odnajdujemy pozycj\u0119&nbsp; <em>Location<\/em>. Przenie\u015bmy przycisk ponad ten panel. Lokalizacja zmieni\u0142a si\u0119 do\u015b\u0107 du\u017co. Oznacza to, \u017ce panel ma sw\u00f3j uk\u0142ad wsp\u00f3\u0142rz\u0119dnych.<\/p>\n\n\n\n<figure class=\"wp-block-gallery aligncenter columns-2 wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-6.png\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-6-150x150.png\" alt=\"\" data-id=\"1457\" data-full-url=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-6.png\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1457\" class=\"wp-image-1457\"\/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-3-150x150.png\" alt=\"\" data-id=\"1458\" data-full-url=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-3.png\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1458\" class=\"wp-image-1458\"\/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-4-150x150.png\" alt=\"\" data-id=\"1459\" data-full-url=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-4.png\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1459\" class=\"wp-image-1459\"\/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-5.png\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-5-150x150.png\" alt=\"\" data-id=\"1460\" data-full-url=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-5.png\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1460\" class=\"wp-image-1460\"\/><\/a><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p>Czyli ju\u017c chyba wszystko wiemy, wi\u0119c mo\u017cemy przej\u015b\u0107 do modyfikacji programu. Przechodzimy do programu kt\u00f3ry znajduje si\u0119 pod przyciskiem utw\u00f3rz i odnajdujemy fragment kt\u00f3ry odpowiedzialny jest za umieszczenie kontrolek na formularzu. Musimy go zmieni\u0107 w ten spos\u00f3b aby kontrolki pojawia\u0142y si\u0119 na naszym panelu. Najpro\u015bciej dopisa\u0107 na pocz\u0105tku tej metody \u017ce dotyczy ona panelu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp\">\/\/dodanie kontrolek do formularza (do kolekcji - tablicy)\npanel1.Controls.Add(ntextbox);<\/code><\/pre>\n\n\n\n<p>Pami\u0119tajmy te\u017c o dopisanie odniesienia do panelu podczas odczytywania pierwszej kontrolki, oraz usuwania kontrolek. Kompilujemy program i uruchamiamy go. W wpisaniu du\u017cej liczby kom\u00f3rek, nadal kom\u00f3rki wychodz\u0105 poza formatk\u0119, ale tym razem jak rozci\u0105gniemy okno nie pokazuj\u0105 si\u0119 kolejne kom\u00f3rki &#8211; z tego powodu \u017ce rozszerzyli\u015bmy formatk\u0119, a nie panel. Aby zobaczy\u0107 kolejne kom\u00f3rki, dodajmy mo\u017cliwo\u015b\u0107 przewijania naszej tabeli. Przechodzimy wi\u0119c do w\u0142a\u015bciwo\u015bci naszego panelu i zaznaczamy na <em>True <\/em>w grupie uk\u0142ad <em>AutoScroll<\/em>. Uruchamiamy nasz program i wpisujemy ilo\u015b\u0107 kom\u00f3rek np 200, liczb\u0119 kolumn np. 5 i szeroko\u015b\u0107 100. Pojawi\u0142a si\u0119 nam tabela i mo\u017cliwo\u015b\u0107 jej przewijania. Ale co to si\u0119 sta\u0142o &#8211; w dziwnym miejscu rozpoczyna si\u0119 nasza tabela. Zapomnieli\u015bmy zmieni\u0107 po\u0142o\u017cenie jej. Przechodzimy wi\u0119c jeszcze raz do kodu i szukamy fragmentu kodu odpowiedzialnego za pocz\u0105tkowy punkt ka\u017cdej kontrolki. Zmieniamy w niej warto\u015b\u0107 12 i 110 na warto\u015bci 3. Jest to pocz\u0105tkowa warto\u015b\u0107 od kt\u00f3rej obliczane s\u0105 nast\u0119pne po\u0142o\u017cenia. Uruchamiamy program i wpisujemy dane jak poprzednio.<\/p>\n\n\n\n<figure class=\"wp-block-gallery aligncenter columns-3 wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-9.png\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-9-150x150.png\" alt=\"\" data-id=\"1461\" data-full-url=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-9.png\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1461\" class=\"wp-image-1461\"\/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-7.png\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-7-150x150.png\" alt=\"\" data-id=\"1462\" data-full-url=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-7.png\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1462\" class=\"wp-image-1462\"\/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-8.png\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-8-150x150.png\" alt=\"\" data-id=\"1463\" data-full-url=\"http:\/\/www.daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Textbox_2-8.png\" data-link=\"http:\/\/www.daniel.slask.pl\/?attachment_id=1463\" class=\"wp-image-1463\"\/><\/a><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p>Tym razem powinno wszystko uruchomi\u0107 si\u0119 poprawnie.<\/p>\n\n\n\n<p>Poni\u017cej kod programu kt\u00f3ry znajduje si\u0119 pod przyciskiem utw\u00f3rz:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"csharp\" class=\"language-csharp line-numbers\">private void button_utworz_Click(object sender, EventArgs e)\n{\n\tliczba_kolumn = Convert.ToInt16(textBox_kolumny.Text);\n\tszerokosc_kolumn = Convert.ToInt16(textBox_szer_komorki.Text);\n\t\/\/sprawdzenie czy tworzymy tabel\u0119 od ilo\u015bci kom\u00f3rek czy wierszy\n\tif (textBox_komorki.Text == \"\")\n\t{\n\t\tliczba_wierszy = Convert.ToInt16(textBox_wiersze.Text);\n\t\tliczba_komorek = liczba_kolumn * liczba_wierszy;\n\t\ttextBox_komorki.Text = liczba_komorek.ToString();\n\t}\n\telse\n\t{\n\t\tliczba_komorek = Convert.ToInt16(textBox_komorki.Text);\n\t}\n\tnr_pierwszy = panel1.Controls.Count;\n\t\/\/p\u0119tla g\u0142\u00f3wna dla wszystkich kom\u00f3rek\n\tfor (int i = 0, x = 1, y = 0; i &lt; liczba_komorek; x++)\n       {\n\t\t\/\/p\u0119tla tworz\u0105ca kom\u00f3rki w danym wierszu\n\t\tfor(y =0; (y &lt; liczba_kolumn) &amp;&amp; (i &lt; liczba_komorek) ; y++, i++)\n\t\t{\n\t\t\t\/\/tworzymy now\u0105 kontrolk\u0119 - textbox, button, oraz label\n\t\t\tTextBox ntextbox = new TextBox();\n\t\t\t\/\/umieszczanie na ekranie danej kontrolki\n\t\t\tntextbox.Location = new System.Drawing.Point(3 + szerokosc_kolumn * y, 3 + 20 * x);\n\t\t\t\/\/okre\u015blenie rozmiar\u00f3w kontrolki\n\t\t\tntextbox.Size = new System.Drawing.Size(szerokosc_kolumn, 20);\n\t\t\t\/\/przypisanie nazwy danej kontrolce\n\t\t\tntextbox.Name = \"d_box_\" + i.ToString();\n\t\t\t\/\/konfiguracja danej kontrolki - wyswietlany tekst, ewentualne ustawienia\n\t\t\t\/\/ustawienie zdarzenia \n\t\t\t\/\/dodanie kontrolek do formularza (do kolekcji - tablicy)\n\t\t\tpanel1.Controls.Add(ntextbox);\n\t\t}\n         }\n}<\/code><\/pre>\n\n\n\n<p>Tym razem ta cz\u0119\u015b\u0107 by\u0142a do\u015b\u0107 kr\u00f3tka, ale uwa\u017cam, \u017ce wnios\u0142a troch\u0119 przydatnych informacji.<\/p>\n\n\n\n<p>Zach\u0119cam do komentowania.<\/p>\n\n\n\n<p>Program jak zwykle mo\u017cna pobra\u0107 tutaj:<\/p>\n\n\n\n<a  data-e-Disable-Page-Transition=\"true\" class=\"download-link download-button aligncenter\" title=\"\" href=\"https:\/\/daniel.slask.pl\/m\/download\/1447\/?tmstv=1776526871\" rel=\"nofollow\" id=\"download-link-1447\" >\n\t<p>\n\t\tPobierz &ldquo;CS19_N01_tabela_2.zip&rdquo;\t<\/p>\n\t<small>CS19_N01_tabela_2.zip\t\t&ndash; Pobrano 308 razy\t\t&ndash; 71,40 KB<\/small>\n<\/a>\n","protected":false},"excerpt":{"rendered":"<p>Kr\u00f3tki opis ca\u0142ego programu: Program do dynamicznego tworzenia tablicy z TextBox&#8217;\u00f3w o zadanej ilo\u015bci kom\u00f3rek, wraz z mo\u017cliwo\u015bci\u0105 zmiany niekt\u00f3rych w\u0142a\u015bciwo\u015bci wybranych kom\u00f3rek. Co tym razem: Tablica tworzona w osobnym panelu z&nbsp; mo\u017cliwo\u015bci\u0105 przewijania tego panelu Ostatnio uda\u0142o nam si\u0119&#8230;<br \/><a class=\"read-more-button\" href=\"https:\/\/daniel.slask.pl\/m\/tworzenie-tabeli-przy-uzyciu-textboxa-2\/\">Wi\u0119cej<\/a><\/p>\n","protected":false},"author":1,"featured_media":1349,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[125,61,8,59],"tags":[192,191,216,215,193],"views":268,"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/daniel.slask.pl\/m\/wp-content\/uploads\/2020\/04\/Csh.png","jetpack_shortlink":"https:\/\/wp.me\/pcPgV3-nd","_links":{"self":[{"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/posts\/1439"}],"collection":[{"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/comments?post=1439"}],"version-history":[{"count":10,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/posts\/1439\/revisions"}],"predecessor-version":[{"id":1611,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/posts\/1439\/revisions\/1611"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/media\/1349"}],"wp:attachment":[{"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/media?parent=1439"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/categories?post=1439"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daniel.slask.pl\/m\/wp-json\/wp\/v2\/tags?post=1439"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}