c# z listu do textboxu

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Kačka333 29. 11. 2016 11:27

Ahoj, mám takový problém potřebovala bych z listu vypsat obsah do textboxu, ale nevím jak na to. Hledala jsem na internetu, ale nenašla jsem nic co bych mohla udělat. Poradíte mi?
Kačka333
Junior

Odeslat příspěvekod satikcz 29. 11. 2016 12:10

O co přesně se snažíš? Chceš vypsat jen první prvek z toho Listu nebo všechny prvky nějak pospojované?
3x AOC AG271QG (2560x1440, IPS, 165Hz, GSync), ASUS Strix RTX3090 OC, Intel Core i7 8700K@5GHz+EKWB L360, ASUS Maximus X, 32GB G.SKILL TridentZ@3466 MHz, ADATA SX8200 2TB + 1TB + Crucial BX 500 GB + Kingston UV400 1TB, Seasonic P-860 Platinum, FD Define S
satikcz
Junior
Uživatelský avatar

Odeslat příspěvekod powlcz 29. 11. 2016 12:19

Taky nerozumím?

Kód: Vybrat vše
            List<string> _list = new List<string>(new string[] { "jedna", "dvě", "Honza", "jde" });

            foreach (string value in _list)
            {
                tb1.Text += value;
            }
Chronický Ujížděč na nevhodnostech
powlcz
Junior

Odeslat příspěvekod Kačka333 29. 11. 2016 12:20

Dělám program na Caesarovu šifru( vezmu text a každý znak posunu o několik míst) vezmu si text z prvního textboxu ten zašifruji a uložím do listu a tenhle list bych potom potřebovala celý vypsat do druhého textboxu. To šifrování už mám napsané, a v message boxu se mi to zobrazilo správně. Ale když se to pokusím nějak poslat do textboxu, nebo do lablu tak se nic nestane.

Edit:
Může být problém v tom, že je ten kód na šifrování napsaný v jiné třídě, kterou potom volám z Form1?
Kačka333
Junior

Odeslat příspěvekod satikcz 29. 11. 2016 12:51

Místo listu se koukni na StringBuilder.

Kdyžtak sem hoď ten kód.
3x AOC AG271QG (2560x1440, IPS, 165Hz, GSync), ASUS Strix RTX3090 OC, Intel Core i7 8700K@5GHz+EKWB L360, ASUS Maximus X, 32GB G.SKILL TridentZ@3466 MHz, ADATA SX8200 2TB + 1TB + Crucial BX 500 GB + Kingston UV400 1TB, Seasonic P-860 Platinum, FD Define S
satikcz
Junior
Uživatelský avatar

Odeslat příspěvekod powlcz 29. 11. 2016 12:57

Spíš tam máš nějakou logickou botu :-) ale to my bez ukázky nevyluštíme
Chronický Ujížděč na nevhodnostech
powlcz
Junior

Odeslat příspěvekod Kačka333 29. 11. 2016 13:02

Tak tady to je( doufám, že se v tom vyznáte) :

tady je kód formuláře:

Kód: Vybrat vše
namespace Šifrování
{
    public partial class CaesarovSifraForm : Form
    {
        public CaesarovSifraForm()
        {
            InitializeComponent();
        }
       
        private void CaesarovSifraForm_Load(object sender, EventArgs e)
        {
            PovolitTextBox();
        }

        public static List<string> text = new List<string>();

        private void PovolitTextBox()
        {
            vlastniTextBox1.ReadOnly = zeSouboruRadioButton1.Checked;
        }

        private void zeSouboruRadioButton1_CheckedChanged(object sender, EventArgs e)
        {
            PovolitTextBox();
        }

        private void provestButton1_Click(object sender, EventArgs e)
        {
            CaesarovaSifra zacitSifrovat;
            zacitSifrovat = new CaesarovaSifra();
           
            zacitSifrovat.Sifrovani(vlastniTextBox1.Text, zobrazeniTextBox1.Text, Convert.ToInt32(Math.Round(numericUpDown1.Value)), sifrovaniRadioButton1.Checked, text);
        }
    }   
}

a tady ta metoda, kterou volám:
Kód: Vybrat vše
namespace Šifrování
{
    public class CaesarovaSifra
    {
        //public static List<string> text = new List<string>();
        List<string> znakySifry = new List<string> { "a", "á", "b", "c", "č", "d", "ď", "e", "é", "ě", "f", "g", "h", "i", "í", "j", "k", "l", "m", "n", "o", "ó", "p", "q", "r", "ř", "s", "š", "t", "ť", "u", "ú", "ů", "v", "w", "x", "y", "ý", "z", "ž", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", " ", ",", ".", "-", "_", "!", "?", ":", "/", "*", "+" };


        public void Sifrovani(string zdroj, string vystup, int klic, bool zmenaRB, List<string> t)
        {
           

            string znaky = zdroj;
            int pocetZnakuTextu = zdroj.Length;
            int pocetZnakuSifry = znakySifry.Count;

            for (int i = 0; i < pocetZnakuTextu; i++)
            {
                t.Add(Convert.ToString(znaky[i]));
                for (int j = 0; j < pocetZnakuSifry; j++)
                {
                    if (zmenaRB == true)
                    {
                        int poradi = j + klic;
                        if (poradi > pocetZnakuSifry)
                        {
                            poradi = (poradi - pocetZnakuSifry);
                        }
                        if (t[i] == znakySifry[j])
                        {
                            t[i] = znakySifry[poradi];
                            break;
                        }
                    }
                    else if(zmenaRB == false)
                    {
                        int poradi = j - klic;
                        if (poradi < 0)
                        {
                            poradi = (poradi + pocetZnakuSifry);
                        }
                        if (t[i] == znakySifry[j])
                        {
                            t[i] = znakySifry[poradi];
                            break;
                        }
                    }
                }
            }
            foreach (string value in t)
            {
                vystup += value;
            }
        }
       
    }
}

-- 29. 11. 2016 14:03 --

jak to sem mam napsat aby to vypadalo dobře?
Kačka333
Junior

Odeslat příspěvekod powlcz 29. 11. 2016 14:20

Když dáš odpovědět a ne jen rychlou odpověď dole, máš možnost použít [ code ][ / code] tagy.

Nicméně chyba je jasná, v metodě máš následující:

Kód: Vybrat vše
public void Sifrovani(string zdroj, string vystup, int klic, bool zmenaRB, List<string> t)


V těle metody, máš pak přiřazení
Kód: Vybrat vše
vystup += value;


Když pak metodu voláš, parametr "vystup" máš jako "zobrazeniTextBox1.Text". To ale není ukazatel, to jen textová hodnota z "zobrazeniTextBox1.Text" kterou sice reprezentuje parametr "vystup", ale jejím přiřazením opravdu nenastavíš zpětně hodnotu do ""zobrazeniTextBox1.Text" :-).

Metoda může mít návratový typ, případně vstupní parametry do metody mohou být jako "output" nebo "reference".

V tvém případě bych řešil návratovou hodnotou metody - místo "void" dej "string".

Kód: Vybrat vše
public string Sifrovani


po
Kód: Vybrat vše
            foreach (string value in t)
            {
                vystup += value;
            }


dej
Kód: Vybrat vše
return vystup;


A až metodu zavoláš, výstup z metody přiřaď to textboxu

Kód: Vybrat vše
zobrazeniTextBox1.Text = zacitSifrovat.Sifrovani(vlastniTextBox1.Text, Convert.ToInt32(Math.Round(numericUpDown1.Value)), sifrovaniRadioButton1.Checked, text);



Getting values back from C# Methods
Chronický Ujížděč na nevhodnostech
powlcz
Junior

Odeslat příspěvekod Kačka333 29. 11. 2016 14:31

:) funguje mi to mnohokrát děkuji. teď se konečně pohnu dál

nebude vadit, když sem potom někdy v budoucnu znovu napíšu, až se zase zaseknu?
Kačka333
Junior

Odeslat příspěvekod powlcz 29. 11. 2016 14:52

můžeš to zkusit :-P
Chronický Ujížděč na nevhodnostech
powlcz
Junior

Odeslat příspěvekod Kačka333 3. 12. 2016 11:17

ahoj dělám další program, tentokrát šifruji text pomocí šifrovací tabulky( vícenásobné pole) text jsem sice zašifrovala, ale nevím jak ho vrátit. Jde nějakým způsobem naprogramovat, aby program poznal, že takový zápis "00122414" znamená array[0][0] array[1][2] array[2][4] array[1][4], což je slovo ahoj?

tady je ten kód co mám:
Kód: Vybrat vše
public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            List<string> t = new List<string>();
            List<string> g = new List<string>();

            string[][] radek = new string[6][];
            radek[0] = new string[5] { "a", "b", "c", "d", "e" };
            radek[1] = new string[5] { "f", "g", "h", "i", "j" };
            radek[2] = new string[5] { "k", "l", "m", "n", "o" };
            radek[3] = new string[5] { "p", "q", "r", "s", "t" };
            radek[4] = new string[5] { "u", "v", "w", "x", "y" };
            radek[5] = new string[5] { "z", " ", ".", "?", "," };

            List<string> abecedaSDiakritikou = new List<string> { "á", "č", "ď", "é", "ě", "í", "ň", "ó", "ř", "š", "ť", "ú", "ů", "ý", "ž" };
            List<string> abecedaBezDiakritiky = new List<string> { "a", "c", "d", "e", "e", "i", "n", "o", "r", "s", "t", "u", "u", "y", "z" };

            string znaky = textBox1.Text.ToLower();
            for (int i = 0; i < znaky.Length; i++)
            {
                t.Add(Convert.ToString(znaky[i]));

                for (int j = 0; j < abecedaSDiakritikou.Count; j++)
                {
                    if (t[i] == abecedaSDiakritikou[j])
                    {
                        t[i] = abecedaBezDiakritiky[j];
                    }
                }
            }
            for (int l = 0; l < znaky.Length; l++)
            {
                for (int k = 0; k < 6; k++)
                {
                    for (int m = 0; m < 5; m++)
                    {
                        if (t[l] == radek[k][m])
                        {
                            g.Add(Convert.ToString(k)+ Convert.ToString(m)+"/");
                            break;
                        }
                    }
                }
            }
           
            foreach (string value in g)
            {
                label1.Text += value;
            }
           
        }
Kačka333
Junior

Odeslat příspěvekod Kačka333 3. 12. 2016 14:11

tak mě napadlo tohle, a myslím že by to mohlo fungovat, jenže nefunguje :-) hlásí mi to že jsem překročila rozsah

Kód: Vybrat vše
public Form1()
        {
            InitializeComponent();
        }

        List<string> t = new List<string>();
        List<string> g = new List<string>();
        List<int> s = new List<int>();
        List<int> ns = new List<int>();

        private void button1_Click(object sender, EventArgs e)///Šifrování
        {
            string[][] radek = new string[6][];
            radek[0] = new string[5] { "a", "b", "c", "d", "e" };
            radek[1] = new string[5] { "f", "g", "h", "i", "j" };
            radek[2] = new string[5] { "k", "l", "m", "n", "o" };
            radek[3] = new string[5] { "p", "q", "r", "s", "t" };
            radek[4] = new string[5] { "u", "v", "w", "x", "y" };
            radek[5] = new string[5] { "z", " ", ".", "?", "," };

            List<string> abecedaSDiakritikou = new List<string> { "á", "č", "ď", "é", "ě", "í", "ň", "ó", "ř", "š", "ť", "ú", "ů", "ý", "ž" };
            List<string> abecedaBezDiakritiky = new List<string> { "a", "c", "d", "e", "e", "i", "n", "o", "r", "s", "t", "u", "u", "y", "z" };

            string znaky = textBox1.Text.ToLower();
            for (int i = 0; i < znaky.Length; i++)
            {
                t.Add(Convert.ToString(znaky[i]));

                for (int j = 0; j < abecedaSDiakritikou.Count; j++)
                {
                    if (t[i] == abecedaSDiakritikou[j])
                    {
                        t[i] = abecedaBezDiakritiky[j];
                    }
                }
            }
            for (int l = 0; l < znaky.Length; l++)
            {
                for (int k = 0; k < 6; k++)
                {
                    for (int m = 0; m < 5; m++)
                    {
                        if (t[l] == radek[k][m])
                        {
                            g.Add(Convert.ToString(k)+ Convert.ToString(m));
                            break;
                        }
                    }
                }
            }
           
            foreach (string value in g)
            {
                textBox2.Text += value;
            }
        }

        private void button3_Click(object sender, EventArgs e)/// dešifrování
        {
            string[][] radek = new string[6][];
            radek[0] = new string[5] { "a", "b", "c", "d", "e" };
            radek[1] = new string[5] { "f", "g", "h", "i", "j" };
            radek[2] = new string[5] { "k", "l", "m", "n", "o" };
            radek[3] = new string[5] { "p", "q", "r", "s", "t" };
            radek[4] = new string[5] { "u", "v", "w", "x", "y" };
            radek[5] = new string[5] { "z", " ", ".", "?", "," };

            string znaky = textBox4.Text;
           
            for (int l = 0; l < Convert.ToInt32(znaky.Length); l++)
            {
                t.Add(Convert.ToString(znaky[l]));
                if (l % 2 == 0)
                    s.Add(Convert.ToInt32(t[l]));
                else
                    ns.Add(Convert.ToInt32(t[l]));
            }
            for (int k = 0; k < s.Count; k++)
            {
                g.Add(radek[ns[k]][s[k]]);
            }

            foreach (string value in g)
            {
                textBox5.Text += value;
            }
        }
        private void button2_Click(object sender, EventArgs e)////vymazání hodnot
        {
            textBox2.Text = "";
            textBox5.Text = "";
            t.Clear();
            g.Clear();
            s.Clear();
            ns.Clear();
        }
Kačka333
Junior

Odeslat příspěvekod Wikan 3. 12. 2016 22:01

Nějak nechápu smysl použití dvourozměrného pole. A taky proč je v programu definované dvakrát.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod Kačka333 3. 12. 2016 23:59

no dvourozměrné pole je tam proto, protože mi jako první udělalo to co jsem chtěla( :) jsem začátečnice a většinou všechno hledám na netu takže jakmile jsem něco našla už jsem dál nehledala)

a nevím co myslíš tím parametrem

je to jen zkušební verze až mi to bude fungovat tak to vložím do většího programu, a teprve potom to budu nějak upravovat
Kačka333
Junior

Odeslat příspěvekod Wikan 4. 12. 2016 08:57

Já ale nic o žádném parametru nepsal.
Wikan
Moderátor
Uživatelský avatar

Další stránka

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků