Jump to content
_marlon307

[RESOLVIDO] C# Referência de objeto não definida para uma instância de um objeto

Recommended Posts

Estou usando um pacote de interface para meu software. O problema e quando eu vou mudar o estilo do software ele me retorna o erro Referência de objeto não definida para uma instância de um objeto na seguinte linha ThemeForm.Style = (MetroColorStyle)Tag; não tenho ideia de que possa ser já que eu baixei um exemplo para ver melhor e não vi nada de diferente

Este e o código.

 

https://mega.nz/#!E9wlCAAR!zs0-R8yWwl5qw0aKlwQH_tRs7hHLiD7w9fSguDKDGlU

using System;
using System.Drawing;
using MetroFramework;
using MetroFramework.Controls;
using MetroFramework.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : MetroForm
    {
        public Form1()
        {
            InitializeComponent();

            this.StyleManager = ThemeForm;

            for (int i = 3; i < 13; i++)
            {
                MetroTile _tile = new MetroTile
                {
                    Size = new Size(30, 30),
                    Tag = i,
                    Style = (MetroColorStyle)i
                };
                _tile.Click += _tile_Click;
                flowLayoutPanel1.Controls.Add(_tile);
            }
        }
        void _tile_Click(object sender, EventArgs e)
        {
            ThemeForm.Style = (MetroColorStyle)Tag;
        }
        private void MetroRadioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if(metroRadioButton1.Checked)
            {
                ThemeForm.Theme = MetroThemeStyle.Dark;
            }
        }
        private void MetroRadioButton2_CheckedChanged(object sender, EventArgs e)
        {
            if (metroRadioButton2.Checked)
            {
                ThemeForm.Theme = MetroThemeStyle.Light;
            }
        }
    }
}
Link do projeto
https://mega.nz/#!E9wlCAAR!zs0-R8yWwl5qw0aKlwQH_tRs7hHLiD7w9fSguDKDGlU

2018-04-22.png

Share this post


Link to post
Share on other sites
3 horas atrás, quintelab disse:

A variável ThemeForm foi instanciada ? Tem valor ?

ThemeForm e um objeto de controle do form. Ele e o responsável por controlar a aparência do form

Share this post


Link to post
Share on other sites
5 minutos atrás, quintelab disse:

Acabei de ler a mensagem de erro novamente e reparei que o objeto Tag esta nulo. De onde vem esse Tag ?

Ele vem do  Membro de System.Windows.Forms.Control  public object Tag { get; set; }
 

Share this post


Link to post
Share on other sites
24 minutos atrás, quintelab disse:

Provavelmente você tem que passar algum valor pra essa variável antes de usar.

Mas nessa parte do código devia estar pegando um valor. 

for (int i = 3; i < 15; i++)
            {
                MetroTile _tile = new MetroTile
                {
                    Size = new Size(30, 30),
                    Style = (MetroColorStyle)i,
                    Tag = i // Aqui ele pega o valor
                };
               
                _tile.Click += _tile_Click;
                flowLayoutPanel1.Controls.Add(_tile);
            }

Pegando o valor ele esta, mas não esta passando o valor para a função abaixo.

Share this post


Link to post
Share on other sites
8 minutos atrás, quintelab disse:

Não necessariamente, o Tag nesse caso é uma propriedade do objeto MetroTile. Você teria que acessar primeiro o MetroTile pra em seguida acessar a propriedade Tag.

Me de um exemplo porque não faço ideia de como e?

Share this post


Link to post
Share on other sites
7 horas atrás, quintelab disse:

Sem ter o código pra debugar é um pouco complexo, mas eu começaria tentando algo do tipo:

 


void _tile_Click(object sender, EventArgs e)
{
    MetroTile _tile = (MetroTile) sender;
    ThemeForm.Style = _tile.Tag;
}

 

 

Consegui fazendo dessa forma e deu certo. Vlw pela ajuda

ThemeForm.Style = (MetroColorStyle)((MetroTile)sender).Tag;

 

  • +1 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By magrelarr
      Olá pessoal. Me chamo Lucas e tenho uma enorme vontade em aprender programação, na intenção de criar um jogo bem simples, mas com alguns detalhes. Minha ideia é um jogo sobre eleições politicas, numa terra ficticia que criei, e contaria com partidos disputando em sete regiões, números em graficos sobre os votos, eleitos e não eleitos, divisão dos poderes, formação de governo, etc. Algo programado dessa forma. Parece complexo mas seria algo básico.
      Então são duas perguntas:
      1° Por onde começar? Eu tenho muita vontade, mas conheço pouco da área. O primeiro passo que foi a história, os mapas, partidos e logos eu já criei, mas e depois?
      2° qual a melhor linguagem pra se aprender. Será um jogo de texto, sem personagens, apenas números e nomes, e realmente não faço ideia de que tipo de linguagem se usa pra jogos assim.

      Deixem dicas ou se caso se interessem pelo projeto, mantenho contato. Obrigado.
    • By ArxT
      Construa um algoritmo para analisar estoque de uma empresa. Inicialmente o programa deve solicitar do usuário a quantidade de itens diferentes em estoque. Em seguida ler, para cada item, o seu nome e a quantidade de unidades no estoque. Ao final, informar o nome do item com mais unidades armazenadas.
    • By Casemiro
      Elabore um programa no qual transfira os números digitados de uma matriz a composta por tres linhas e cinco colunas para a matriz b de 5 linhas e 3 colunas
    • By Eduardo.10
      Gostaria de ajuda para resolver uns exercícios dessa matéria obrigatória para o curso de engenharia que estou com dificuldades
       
       
      Utiliza o comando switch-case
      Quando a questão conter um programa a ser criado e resolvido com o algoritmo, a resolução deve conter as etapas para a construção da lógica:   diagrama de blocos(minimamente) e codificação em C ( que deve ser testada no compilador). Pergunta:
      1) Considere as estações do ano prevalentes para cada mês na europa:
      Janeiro (1): Inverno
      Fevereiro (2): Inverno
      Março (3): Inverno
      Abril (4): Primavera
      Maio (5): Primavera
      Junho (6): Primavera
      Julho (7): Verão
      Agosto (8): Verão
      Setembro (9): Verão
      Outubro (10): Outono
      Novembro (11): Outono
      Dezembro (12): Outono

      Escreva um programa que solicita ao usuário que forneça o número do mês de seu aniversário e imprima:

      “Você nasceu na Primavera” ou
      “Você nasceu no Verão” ou
      “Você nasceu no Outono” ou
      “Você nasceu no Inverno”

      conforme for o caso.
       
       
       
      Resolução em fluxograma e codificação em linguagem C).
      2) Escreva um programa que imprima todos os inteiros no intervalo [10, 20], em ordem crescente.
      3)  Escreva um programa que imprima todos os inteiros no intervalo [10, 20], em ordem decrescente.
      4) Fazer um programa que calcule e escreva o valor de S: S = 1/1 + 3/2 + 5/3 + 7/4+...+99/50

      5) Fazer um programa que calcule e escreva a seguinte soma: S = 21/20 + 22/19 + 23/18 +...+ 220/1. Use a função pow (não se esqueça do #include<math.h>).

      6) Fazer um programa que calcule e escreva o valor de S onde:
      S = 1/1 – 2/4 + 3/9 – 4/16 + 5/25 – 6/36 ... –10/100
       
      Se puderem me ajudar, por favor?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.