0

Как можно сохранить значение с ячейки в переменную?

namespace FirstApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    private void Form1_Load(object sender, EventArgs e)
    {

        var column1 = new DataGridViewColumn();
        column1.HeaderText = "1"; //текст в шапке
        column1.Width = 30; //ширина колонки
        //column1.ReadOnly = true; //значение в этой колонке нельзя править
        column1.Name = "1"; //текстовое имя колонки, его можно использовать вместо обращений по индексу
        column1.Frozen = true; //флаг, что данная колонка всегда отображается на своем месте
        column1.CellTemplate = new DataGridViewTextBoxCell(); //тип нашей колонки

        var column2 = new DataGridViewColumn();
        column2.HeaderText = "2";
        column2.Width = 30;
        column2.Name = "2";
        column2.CellTemplate = new DataGridViewTextBoxCell();

        var column3 = new DataGridViewColumn();
        column3.HeaderText = "3";
        column3.Width = 30;
        column3.Name = "3";
        column3.CellTemplate = new DataGridViewTextBoxCell();

        var column4 = new DataGridViewColumn();
        column4.HeaderText = "4";
        column4.Width = 30;
        column4.Name = "4";
        column4.CellTemplate = new DataGridViewTextBoxCell();

        var column5 = new DataGridViewColumn();
        column5.HeaderText = "5";
        column5.Width = 30;
        column5.Name = "5";
        column5.CellTemplate = new DataGridViewTextBoxCell();

        var column6 = new DataGridViewColumn();
        column6.HeaderText = "6";
        column6.Width = 30;
        column6.Name = "6";
        column6.CellTemplate = new DataGridViewTextBoxCell();

        var column7 = new DataGridViewColumn();
        column7.HeaderText = "7";
        column7.Width = 30;
        column7.Name = "7";
        column7.CellTemplate = new DataGridViewTextBoxCell();

        var column8 = new DataGridViewColumn();
        column8.HeaderText = "8";
        column8.Width = 30;
        column8.Name = "8";
        column8.CellTemplate = new DataGridViewTextBoxCell();

        var column9= new DataGridViewColumn();
        column9.HeaderText = "9";
        column9.Width = 30;
        column9.Name = "9";
        column9.CellTemplate = new DataGridViewTextBoxCell();

        var column10 = new DataGridViewColumn();
        column10.HeaderText = "10";
        column10.Width = 30;
        column10.Name = "10";
        column10.CellTemplate = new DataGridViewTextBoxCell();

        var column11 = new DataGridViewColumn();
        column11.HeaderText = "11";
        column11.Width = 30;
        column11.Name = "11";
        column11.CellTemplate = new DataGridViewTextBoxCell();

        var column12 = new DataGridViewColumn();
        column12.HeaderText = "12";
        column12.Width = 30;
        column12.Name = "12";
        column12.CellTemplate = new DataGridViewTextBoxCell();

        var column13 = new DataGridViewColumn();
        column13.HeaderText = "13";
        column13.Width = 30;
        column13.Name = "13";
        column13.CellTemplate = new DataGridViewTextBoxCell();

        var column14 = new DataGridViewColumn();
        column14.HeaderText = "14";
        column14.Width = 30;
        column14.Name = "14";
        column14.CellTemplate = new DataGridViewTextBoxCell();

        var column15 = new DataGridViewColumn();
        column15.HeaderText = "15";
        column15.Width = 30;
        column15.Name = "15";
        column15.CellTemplate = new DataGridViewTextBoxCell();



        dataGridView1.Columns.Add(column1);
        dataGridView1.Columns.Add(column2);
        dataGridView1.Columns.Add(column3);
        dataGridView1.Columns.Add(column4);
        dataGridView1.Columns.Add(column5);
        dataGridView1.Columns.Add(column6);
        dataGridView1.Columns.Add(column7);
        dataGridView1.Columns.Add(column8);
        dataGridView1.Columns.Add(column9);
        dataGridView1.Columns.Add(column10);
        dataGridView1.Columns.Add(column11);
        dataGridView1.Columns.Add(column12);
        dataGridView1.Columns.Add(column13);
        dataGridView1.Columns.Add(column14);
        dataGridView1.Columns.Add(column15);


        dataGridView1.AllowUserToAddRows = false; //запрешаем пользователю самому добавлять строки


            //Добавляем строку, указывая значения колонок поочереди слева направо
            dataGridView1.Rows.Add("x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15");


        for (int i = 0; i < 1; ++i)
        {

            dataGridView1.Rows.Add();  //<-- 3 колонка с которой нужно взять и сохр значение в переменную

        }


    }
}

}

введите сюда описание изображения

W1rst
  • 17
  • Вам было дано полное решение с подробнейшим примером, как сделать это в WPF. Думаете после того как вы не смогли найти в готовом коде DataTable, то сможете с Winforms разобраться? А дальше что, консоль будет? – aepot Oct 11 '22 at 11:14
  • Начните с чтения документации https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.datagridview – aepot Oct 11 '22 at 11:14
  • object o = dataGridView1[x, y].Value; – Виктор Oct 11 '22 at 11:19
  • тогда уж int x = Convert.ToInt32(o); Кстати, вы же умеете цикл for, почему у вас в коде одно и то же повторяется? Сделайте цикл. – aepot Oct 11 '22 at 11:20
  • @Виктор а я и не вам) – aepot Oct 11 '22 at 11:22
  • 4
    Уважаемый, если у вас возникают дополнительные вопросы в ходе решения конкретной задачи, не бросайте это, не игнорируйте комментарии, что вам пишут, спрашивайте у людей конкретно что вам надо, и так далее. А то вот вы про WPF спросили, вам сказали как, вы и слова в ответ не сказали, бросили, пошли в старый, ужасный WinForms, а почему? А потому что вы побоялись идти дальше, а зря, там все оооочень просто, было бы желание разбираться, да? – EvgeniyZ Oct 11 '22 at 11:29
  • 2
    @EvgeniyZ щас скажут, что злые зазнавшиеся программисты обижают новичков :) – aepot Oct 11 '22 at 11:33
  • 1
    @aepot обидеть человека нельзя, можно только обидеться )) – Aarnihauta Oct 11 '22 at 11:35
  • 1
    @Kalmankantaja что злые зазнавшиеся программисты вынуждают новичков обижаться :) – aepot Oct 11 '22 at 11:36
  • 1
    Всем спасибо за ответы. Мне в технаре задали сделать кодировку Хэминга и я пытался сделать в WPF, но после ответа на мой первый вопрос понял, что это будет сложно. Подумал что в winforms это будет легче сделать – W1rst Oct 11 '22 at 11:39
  • 1
    Да одинаково по сложности, все равно разбираться придется. Начните с простого, сделайте логику из фиксированных значений, просто создайте и заполните массив переменных. А уже потом к нему прикручивайте интерфейс, при чем неважно какой. Приходите с конкретными вопросами, поможем, если сможем. – aepot Oct 11 '22 at 11:41
  • 1
    Вот вам WPF: ObservableCollection<MyClass> Items {get;} public MainWindow(){ DataContext = this; } и XAML: <DataGrid ItemsSource = "{Binding Items}" />, все.... У вас привязка, полноценная и рабочая, где ваши новые ячейки автоматом будут в коллекции Items. Сложно? Да я не сказал бы... Это основа основ, которую вы проигнорировали, побоялись. – EvgeniyZ Oct 11 '22 at 11:41
  • @aepot После того как получится сделать прогу, сделаю все аккуратно и красиво – W1rst Oct 11 '22 at 11:42
  • 1
    Для начала сделайте хоть в консоли, логику, скелет, алгоритмы. Чтобы работало. Данные хоть из файла грузите, хоть в коде прописывайте. А потом выбирайте UI движок и начинайте интерфейс. – aepot Oct 11 '22 at 11:44
  • @aepot Снова здраствуйте) я тут что-то пытался сделать. Вот что получилось: for (int i = 0; i < dataGridView1.Rows.Count; ++i) { for (int j = 0; j < dataGridView1.Columns.Count; ++j) { //Значения ячеек хряняться в object
                 object o = dataGridView1[j, i].Value;
    
                }
            }
    

    Как теперь можно взаимодействовать с object o. Например засунуть одну из ячеек в label

    – W1rst Oct 11 '22 at 13:27
  • 1
    label.Text = o?.ToString() ?? "нет значения"; – aepot Oct 11 '22 at 14:11

0 Answers0