0

これは私が使用しているコードですが、ウィンドウ形式で行った方法で実装できる理由がわかりません。

        Button[] btnMonday = new Button[20];
        string[] timeslot = { "08:00 AM", "08:30 AM", "09:00 AM", "09:30 AM", "10:00 AM", "10:30 AM", "11:00 AM", "11:30 AM", "12:00 PM", "12:30 PM", "01:00 PM", "01:30 PM", "02:00 PM", "02:30 PM", "03:00 PM", "03:30 PM", "04:00 PM", "04:30 PM", "05:00 PM", "05:30 PM" };

        #region Monday
        for (int i = 0; i < 20; i++)
        {
            btnMonday[i].SetValue(Height, 38);
            btnMonday[i].SetValue(Width, 256);
            btnMonday[i].SetValue(Content, timeslot[i]);
            btnMonday[i].SetValue(Background, 0xFF, 0xB1, 0xB1, 0xB1);

            // Sets dependency properties
            btnMonday[i].SetValue(Grid.ColumnProperty, 0);
            btnMonday[i].SetValue(Grid.RowProperty, i + 1);
            // Adds the dynamically created control to the canvas
            LayoutRoot.Children.Add(btnMonday[i]);
        }

アップデート

コードのこの部分でまだエラーが発生しています::

 Button[] btnMonday = new Button[20];
            string[] timeslot = { "08:00 AM", "08:30 AM", "09:00 AM", "09:30 AM", "10:00 AM", "10:30 AM", "11:00 AM", "11:30 AM", "12:00 PM", "12:30 PM", "01:00 PM", "01:30 PM", "02:00 PM", "02:30 PM", "03:00 PM", "03:30 PM", "04:00 PM", "04:30 PM", "05:00 PM", "05:30 PM" };

            #region Monday
            for (int i = 0; i < 20; i++)
            {
                btnMonday[i] = new Button();
                btnMonday[i].SetValue(Height, 38);
                btnMonday[i].SetValue(Width, 256);
                btnMonday[i].SetValue(Content, timeslot[i]);

                // Sets dependency properties
                btnMonday[i].SetValue(Grid.ColumnProperty, 0);
                btnMonday[i].SetValue(Grid.RowProperty, i + 1);
                // Adds the dynamically created control to the canvas
                LayoutRoot.Children.Add(btnMonday[i]);
            }

構文エラーの可能性はありますか?? バックグラウンドの値をボタンに設定する方法を知っているかもしれませんか?? 背景色を定義する以前のスタイルではうまく機能しないようです。エラーが発生します::

Error   2   Argument 1: cannot convert from 'double' to 'System.Windows.DependencyProperty' 

Error   1   The best overloaded method match for 'System.Windows.DependencyObject.SetValue(System.Windows.DependencyProperty, object)' has some invalid arguments

この数行のために

        btnMonday[i].SetValue(Height, 38);
        btnMonday[i].SetValue(Width, 256);
        btnMonday[i].SetValue(Content, timeslot[i]);
        btnMonday[i].SetValue(Background, 0xFF, 0xB1, 0xB1, 0xB1);
4

4 に答える 4

1
        Button[] btnMonday = new Button[20];
        string[] timeslot = { "08:00 AM", "08:30 AM", "09:00 AM", "09:30 AM", "10:00 AM", "10:30 AM", "11:00 AM", "11:30 AM", "12:00 PM", "12:30 PM", "01:00 PM", "01:30 PM", "02:00 PM", "02:30 PM", "03:00 PM", "03:30 PM", "04:00 PM", "04:30 PM", "05:00 PM", "05:30 PM" };

        for (int i = 0; i < 20; i++)
        {
            btnMonday[i] = new Button();
            btnMonday[i].Height = 38;
            btnMonday[i].Width = 256;
            btnMonday[i].Content = timeslot[i];
            btnMonday[i].Margin = new Thickness(0, i * 68, 0, 0);

            // Sets dependency properties
            btnMonday[i].SetValue(Grid.ColumnProperty, 0);
            btnMonday[i].SetValue(Grid.RowProperty, i + 1);

            // Adds the dynamically created control to the canvas
            LayoutRoot.Children.Add(btnMonday[i]);
        }

私はあなたの質問を完全には理解していませんが、あなたのコードはコンパイルできません。上記のように、私はそれを適切に修正しました。

于 2011-11-09T02:12:23.060 に答える
1

SetValue メソッドの使用を主張する場合は、これを試してください。

        btnMonday[i].SetValue(Button.WidthProperty, 38);
        btnMonday[i].SetValue(Button.HeightProperty, 256);
        btnMonday[i].SetValue(Button.ContentProperty, timeslot[i]);
于 2011-11-09T02:20:02.703 に答える
1
    Button[] btnMonday = new Button[20];
    string[] timeslot = { "08:00 AM", "08:30 AM", "09:00 AM", "09:30 AM", "10:00 AM", "10:30 AM", "11:00 AM", "11:30 AM", "12:00 PM", "12:30 PM", "01:00 PM", "01:30 PM", "02:00 PM", "02:30 PM", "03:00 PM", "03:30 PM", "04:00 PM", "04:30 PM", "05:00 PM", "05:30 PM" };

    #region Monday
    for (int i = 0; i < 20; i++)
    {
        btnMonday[i] = new Button();
        btnMonday[i].Height = 38;
        btnMonday[i].Width = 256;
        btnMonday[i].Content = timeslot[i];

        // Sets dependency properties
        Grid.SetColumn(btnMonday[i], 0);
        Grid.SetRow(btnMonday[i], i + 1);
        // Adds the dynamically created control to the canvas
        LayoutRoot.Children.Add(btnMonday[i]);
    }

これを試して

于 2011-11-09T01:44:01.567 に答える
1

null参照エラーが発生する必要があると思います。

最初に Button 配列を宣言して割り当てます。

ただし、各ボタンには割り当てが必要です。

btnMonday[i] = new Button();

于 2011-11-09T01:44:09.417 に答える