Добавление элементов управления во время выполнения не работает - PullRequest
0 голосов
/ 23 июня 2011

Я работаю с несколькими API погоды. На Googles API я пытаюсь загрузить прогноз на 3 дня. Вот как это выглядит сейчас: РЕДАКТИРОВАТЬ: Эта проблема была решена

private void LoadForecast(WeatherSet set)
        {
            RemoveControls();

            form = new forecastView(7, 159, 1, set);
            form1 = new forecastView(161, 159, 2, set);
            form2 = new forecastView(7, 254, 3, set);

            this.Controls.Add(form);
            this.Controls.Add(form1);
            this.Controls.Add(form2);
        }




using System.Windows.Forms;
using WeatherVaneGoogleWrapper.Forecast;
using WeatherVaneGoogleWrapper.Weather;

namespace WeatherVane
{
    public partial class forecastView : UserControl
    {
        public forecastView()
        {
            InitializeComponent();
        }

        public forecastView(int x, int y, int index,WeatherSet set)
        {
            InitializeComponent();

            label7.Text = string.Format("High:{0}", set.Forecast[index].High);
            label8.Text = string.Format("Low: {0}", set.Forecast[index].Low);
            pictureBox3.Load(string.Format("http://www.google.com/{0}", set.Forecast[index].Icon));
            groupBox1.Text = set.Forecast[index].DayOfTheWeek;
            label9.Text = string.Format("Conditions: {0}", set.Forecast[index].Condition);
            this.Location = new System.Drawing.Point(x, y);
        }
    }
}

Гораздо приятнее, если я скажу сам, вот как это сделать, но я просто не могу это сделать: \

    private void LoadCurrentWeatherData(string loc)
            {

                WeatherSet set = WeatherService.Response(GoogleWeatherRequest.RequestData(new WeatherService(loc)));

                LowLabelOne.Text = string.Format("Current Temp: {0}{1}", set.Current.TemperatureFahrenheit, "°");
                groupBox1.Text = string.Format("Current Conditions for {0}", set.Information.City);
                HumidityLabel.Text = set.Current.Humidity;
                windConditionsLabel.Text = string.Format("Wind Conditions: {0}", set.Current.Wind);
                label3.Text = string.Format("Condition: {0}", set.Current.Condition);
                pictureBox1.Load(string.Format("http://www.google.com/{0}", set.Current.Icon));

                LoadForecastControls(set);

                dateTimeLabel.Text = string.Format("Last Check: {0} {1}", Convert.ToDateTime(set.Information.CurrentDateTime).ToShortDateString(),
                    Convert.ToDateTime(set.Information.CurrentDateTime).ToShortTimeString());

                set = null;
            }

            private void LoadForecastControls(WeatherSet set)
            {
                RemoveControls();

                form = new forecastView(12, 136, 1, set);
                form1 = new forecastView(155, 136, 2, set);
                form2 = new forecastView(12, 218, 3, set);

                this.Controls.Add(form);
                this.Controls.Add(form1);
                this.Controls.Add(form2);
            }

            private void RemoveControls()
            {
                this.Controls.Remove(form);
                this.Controls.Remove(form1);
                this.Controls.Remove(form2);
            }

Can someone help?

1 Ответ

0 голосов
/ 24 июня 2011

Мои WebForms становятся ржавыми, но я не думаю, что вы можете создать новые UserControls и добавить их таким образом. Я считаю, что вам нужно использовать Page.LoadControl () .

var form = Page.LoadControl(typeof(forecastView), new { 12, 136, 1, set });

Page.Controls.Add(form);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...