প্রোগ্রামিয়ালিভাবে গ্রিড সারি এবং কলাম অবস্থানগুলি কীভাবে সেট করবেন


92

স্ট্যাকপ্যানেলের ভিতরে আমার দুটি গ্রিড রয়েছে। প্রথম গ্রিডটির নাম গ্রিডএক্স। প্রাথমিকভাবে, গ্রিডের ভিতরে, পাঠ্যবাক্সগুলির একটি 2D অ্যারে রয়েছে (রোডেফস / কলামডেফস)। এক্সএএমএল-এ টেক্সটবক্স সংজ্ঞাটি

<TextBox x:Name="A1" Grid.Row="4" Grid.Column="5" TextAlignment="Center" />

আমি গ্রিডএক্স এর অংশ হিসাবে প্রোগ্রাম হিসাবে টেক্সটব্লক যুক্ত করতে চাই।

প্রভাবটি এরকম হতে হবে

<TextBlock Grid.Row="4" Grid.Column="5"
HorizontalAlignment="Left" VerticalAlignment="Top" Text="10" FontSize="8"/>

এটি কীভাবে যুক্ত করবেন। আমি এটি চেষ্টা করেছি:

TextBlock tblock = new TextBlock();
GridX.SetColumn(tblock, cIndex);
GridX.SetRow(tblock, rIndex);

কিন্তু ব্যর্থ।

আবার আমি এটি চেষ্টা করেছিলাম:

int rIndex = Grid.GetRow(txtBox);
int cIndex = Grid.GetColumn(txtBox);                               

TextBlock tblock = new TextBlock();
tblock.VerticalAlignment = VerticalAlignment.Top;
tblock.HorizontalAlignment = HorizontalAlignment.Left;
tblock.FontSize = 8;
tblock.Text = rc[i, j - 1];

Grid.SetColumn(tblock, cIndex);
Grid.SetRow(tblock, rIndex);

txtBox.MaxLength = 1;    

এখন সমস্যাটি হচ্ছে টেক্সটব্লকটি দৃশ্যমান নয়। পাঠ্যবক্স এটি আড়াল করে। আমি তোমার সাহায্য কে সাধুবাদ জানাই.


কোড আপডেট হয়েছে ow এখন সমস্যাটি পাঠ্য ব্লকটির দৃশ্যমানতা
বিনোদ

উত্তর:


161

সংযুক্ত বৈশিষ্ট্যগুলির জন্য আপনি যে বস্তুর জন্য মানটি নির্ধারণ করতে চান সেটিতে সেটভ্যালুকে কল করতে পারেন:

tblock.SetValue(Grid.RowProperty, 4);

বা স্থির সেট পদ্ধতিতে কল করুন (যেমন চেষ্টা করার মতো উদাহরণ হিসাবে নয়) মালিকের ধরণের সম্পত্তিটির জন্য, এই ক্ষেত্রে সেটরউ করুন:

Grid.SetRow(tblock, 4);

সেটলু কাজ করেনি যখন সেটভ্যালু করেনি: এটি সারিটি যেমন চলছে (আমার ক্ষেত্রে শূন্য)
আন্তন ট্রপ্যাশকো

4
আপনাকে নিশ্চিত করতে হবে যে টেক্সটব্লক উদাহরণটি গ্রিড উদাহরণের অংশ, আপনি এটি করতে পারেন: mygrid.Children.Add (myTextBlock);
রডরিগো ক্যাবলেরো

রানটাইমটিতে পরিবর্তনটি কার্যকর করতে গেলে কোনও প্রেরক ব্যবহার করবেন না। এটা আমার ক্ষেত্রে ছিল।
হেগেন

32

এখানে একটি উদাহরণ যা কারও সাহায্য করতে পারে:

Grid test = new Grid();
test.ColumnDefinitions.Add(new ColumnDefinition());
test.ColumnDefinitions.Add(new ColumnDefinition());
test.RowDefinitions.Add(new RowDefinition());
test.RowDefinitions.Add(new RowDefinition());
test.RowDefinitions.Add(new RowDefinition());

Label t1 = new Label();
t1.Content = "Test1";
Label t2 = new Label();
t2.Content = "Test2";
Label t3 = new Label();
t3.Content = "Test3";
Label t4 = new Label();
t4.Content = "Test4";
Label t5 = new Label();
t5.Content = "Test5";
Label t6 = new Label();
t6.Content = "Test6";

Grid.SetColumn(t1, 0);
Grid.SetRow(t1, 0);
test.Children.Add(t1);

Grid.SetColumn(t2, 1);
Grid.SetRow(t2, 0);
test.Children.Add(t2);

Grid.SetColumn(t3, 0);
Grid.SetRow(t3, 1);
test.Children.Add(t3);

Grid.SetColumn(t4, 1);
Grid.SetRow(t4, 1);
test.Children.Add(t4);

Grid.SetColumn(t5, 0);
Grid.SetRow(t5, 2);
test.Children.Add(t5);

Grid.SetColumn(t6, 1);
Grid.SetRow(t6, 2);
test.Children.Add(t6);

1
for (int i = 0; i < 6; i++)
{
    test.ColumnDefinitions.Add(new ColumnDefinition());

    Label t1 = new Label();
    t1.Content = "Test" + i;

    Grid.SetColumn(t1, i);
    Grid.SetRow(t1, 0);
    test.Children.Add(t1);
}

1

এটা চেষ্টা কর:

                Grid grid = new Grid(); //Define the grid
                for (int i = 0; i < 36; i++) //Add 36 rows
                {
                    ColumnDefinition columna = new ColumnDefinition()
                    {
                        Name = "Col_" + i,
                        Width = new GridLength(32.5),
                    };
                    grid.ColumnDefinitions.Add(columna);
                }

                for (int i = 0; i < 36; i++) //Add 36 columns
                {
                    RowDefinition row = new RowDefinition();
                    row.Height = new GridLength(40, GridUnitType.Pixel);
                    grid.RowDefinitions.Add(row);
                }

                for (int i = 0; i < 36; i++)
                {
                    for (int j = 0; j < 36; j++)
                    {
                        Label t1 = new Label()
                        {
                            FontSize = 10,
                            FontFamily = new FontFamily("consolas"),
                            FontWeight = FontWeights.SemiBold,
                            BorderBrush = Brushes.LightGray,
                            BorderThickness = new Thickness(2),
                            HorizontalContentAlignment = HorizontalAlignment.Center,
                            VerticalContentAlignment = VerticalAlignment.Center,
                        };
                        Grid.SetRow(t1, i);
                        Grid.SetColumn(t1, j);
                        grid.Children.Add(t1); //Add the Label Control to the Grid created
                    }
                }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.