Erro estranho no método

17/04/2012

0

Pessoal, bom dia. Eu tenho um WebForm, que plota um gráfico e funciona bem. Eu fiz tudo no form, porque precisava o mais rápido fazer uma amostra para saber se aprovam ou não o projeto. Bem, resolvido essa e aprovado, agora vou melhorar o código. Uma das coisas que fiz, foi criar uma classe genérica e comum para montar algumas coisas, como o cabeçãlho do gráfico, as chamadas a banco e deixar limpo as páginas que irão mostrar os gráficos, ou seja, ir fazendo as chamadas a essas classes, carregando os devidos métodos e tendo o resultado final esperado. Acontece que um métod que criei para montar o cabeçalho, está dando erro e copiei tudo da página que funciona, inclusive todos os USINGs. Abaixo o cabeçalho e a linha onde o erro aparece e mais abixo o erro.

public void MontaChart(int altura, int largura)

{


//Cria o objeto Chart, base de todos os gráficos

RadChart radChart = new RadChart();

radChart.ChartTitle.TextBlock.Text = CABEÇALHO;



//Muda a cor de fundo do gráfico para transparente

radChart.Appearance.FillStyle.FillType = Telerik.Charting.Styles.FillType.Solid;

radChart.Appearance.FillStyle.MainColor = System.Drawing.Color.Transparent;

radChart.PlotArea.Appearance.FillStyle.FillType = Telerik.Charting.Styles.FillType.Solid;

radChart.PlotArea.Appearance.FillStyle.MainColor = System.Drawing.Color.Transparent;



this.Controls.Add(radChart);//Aqui aparece o erro, em cima de Controls



............... // Mais comandos aqui

}


Esse é o erro:

ProjetoBanco.UI.Web.Graficos.ControlsCharts does not contain a definition for Controls and no extension method Controls accepting a first argument of type ProjetoBanco.UI.Web.Graficos.ControlsCharts could be found (are you missing a using directive or an assembly reference?)

Pjava

Pjava

Responder

Posts

17/04/2012

Joel Rodrigues

Na linha
this.Controls.Add(radChart);
você tenta adicionar o chart à classe que você está codificando. Na página funcionava pois você adicionava direto ao form, que suporta esse método.
Ao usar a palavra reservada THIS, você refere-se ao objeto dentro do qual se está escrevendo, no caso, sua classe.
Adapte seu código, adicionando o radChart ao form.

Boa sorte.
Responder

17/04/2012

Pjava

Entendi mas não compreendi. Adicionar o chart ao Form, me desculpe, mas não entendi, ou melhor, como assim?
Responder

17/04/2012

Joel Rodrigues

Você usava esse código onde? Se era dentro de um form, por exemplo, você deve usar meuForm.Controls.Add ao invés de this.Controls.Add.

O que eu quis dizer foi: com o this.Controls.Add você está tentando adicionar aos controles do seu objeto, que no caso, a sua classe não possui a propriedade Controls. Como você quer adicionar em algum outro lugar, tem que referenciá-lo, por exemplo,meuForm.Controls.Add.

Deu pra sacar?
Responder

17/04/2012

Pjava

Saquei sim, valeu. É que tem muita coisa nova pra mim o C#, mas aos poucos chegamos lá e a melhor forma é essa, fazendo e um baita de um projeto. Tenho mais dúvidas, em relação a isso. Eu estou vindo do Delphi, então é muita coisa nova pra mim. Por exemplo, eu estou fazendo um biblioteca de métodos para serem reutilizados ao longo do projeto. Eu tenho um namespace, onde estão uns forms. Eu não posso setar diretamente o Form, mas sim passar uma referência pra ele. O que passa é o tipo. Qual tipo? Tentei Form, mas deu erro. Quanto a usa dica, funcionou legal. Obrigado.
Responder

17/04/2012

Joel Rodrigues

Bom, não sei se entendi bem sua pergunta, mas vou tentar dar um exemplo. Suponha um método bem simples apenas exibe um form com dimensões pré-definidas.
Observe o código:
public void AbrirTela(Form f)
{
f.Height = 600;
f.Width = 800;
f.ShowDialog();
}


Agora eu quero usar esse form na minha tela principal, abrindo uma segunda tela (de cadastro, por exemplo). Observe:
using(frmCadastro frm = new frmCadastro())
AbrirTela(frm);


Essa é uma forma de fazer.
Qualquer dúvida, é só falar.
Responder

17/04/2012

Pjava

Então, o problema é que quando eu ponho um Argumento em meu método do tipo Form, dá erro. Ele não está aceitando o argumento com esse tipo(Form). Até aí entendi e é mais ou menos isso mesmo, até fiz, mas não aceita o tipo Form. O que devo acrescentar? Já adicionei todos os using que achei ser necessário.
Responder

17/04/2012

Joel Rodrigues

Bom, primeiramente uma dica: não diga apenas que ocorreu um erro, cite qual foi.

Então, você está desenvolvendo essa aplicação em ASP.NET? Se for, você não pode fazer referência à classe Form, pois esta é para aplicações Windows Forms. Qual é exatamente sua necessidade?
Responder

17/04/2012

Pjava

Meu projeto é web.
Responder

18/04/2012

Joel Rodrigues

A classe a qual pertencem os web forms é a Page, contida no namespace System.Web.UI.
Teste aí.
Responder

18/04/2012

Pjava

Não testei ainda, mas não deu mais o erro. Era isso mesmo. Valeu pela dica e muito obrigado. Vejo que você manja de C#.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar