<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Diário de Códigos &#187; Visual Studio 2008</title>
	<atom:link href="http://diariodecodigos.info/category/net/visual-studio-2008/feed/" rel="self" type="application/rss+xml" />
	<link>http://diariodecodigos.info</link>
	<description>Codigos Fonte, Artigos e Dicas</description>
	<lastBuildDate>Wed, 11 Apr 2012 18:56:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Percorrendo Todos TextBox</title>
		<link>http://diariodecodigos.info/2009/08/percorrendo-todos-textbox/</link>
		<comments>http://diariodecodigos.info/2009/08/percorrendo-todos-textbox/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 01:54:27 +0000</pubDate>
		<dc:creator>Alexandre Santos</dc:creator>
				<category><![CDATA[Visual Studio 2008]]></category>
		<category><![CDATA[as]]></category>
		<category><![CDATA[boxing]]></category>
		<category><![CDATA[casting]]></category>
		<category><![CDATA[is]]></category>
		<category><![CDATA[Null]]></category>
		<category><![CDATA[object]]></category>
		<category><![CDATA[textbox]]></category>
		<category><![CDATA[Tipo-Referência]]></category>
		<category><![CDATA[Tipo-Valor]]></category>
		<category><![CDATA[unboxing]]></category>

		<guid isPermaLink="false">http://diariodecodigos.info/?p=384</guid>
		<description><![CDATA[Essa técnica consiste em trabalhar com a classe Object e fazer Casting Seguro. O código para percorrer todos os TextBox é o seguinte: /* ------------------------------------------------------------- */ // O &#38;quot;varContainer&#38;quot; nesse caso é o Grid de WPF // Mas pode ser um Panel.Controls por exemplo // Na verdade a classe Grid é derivada da Panel //]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-351" title="C#" src="http://diariodecodigos.info/wp-content/uploads/2009/08/C.gif" alt="C#" width="550" height="57" /></p>
<p>Essa técnica consiste em trabalhar com a classe <strong>Object </strong>e fazer <strong>Casting Seguro</strong>.</p>
<p>O código para percorrer todos os TextBox é o seguinte:<span id="more-384"></span></p>
<pre class="brush: csharp;">
/* ------------------------------------------------------------- */
// O &amp;quot;varContainer&amp;quot; nesse caso é o Grid de WPF
// Mas pode ser um Panel.Controls por exemplo
// Na verdade a classe Grid é derivada da Panel
// O importante é obter uma Classe de Coleção chamada UIElementsCollections
/* ------------------------------------------------------------- */
foreach (object ob in varContainer.Children)
 {
    TextBox caixaTexto = ob as TextBox;

    if (caixaTexto != null)
     {
        caixaTexto.Text = &amp;quot;S&amp;quot;;
    }
 }
</pre>
<ul>
<li>Para cada objeto retornado do Array de Controles (<strong>UIElementCollection)</strong> a referência dele é colocada na variável <strong>ob</strong> (<em>object</em>)</li>
<li>Com a variável <strong>ob</strong> referenciando um objeto fazemos o <strong>Casting</strong> <strong>Seguro</strong> com o operador &#8220;<strong>as</strong>&#8220;<strong><br />
</strong></li>
<li>Se a variável <strong>caixaTexto</strong> (tipo <em>TextBox</em>) não for <strong>NULL</strong> o <strong>Casting</strong> foi executado com sucesso, isso quer dizer que o objeto pego no <strong>UIElementCollection</strong> realmente era um objeto do tipo <strong>TextBox</strong> e que a referência daquele objeto agora foi passada para a variável <strong>caixaTexto</strong>.</li>
<li>Atribuímos &#8220;S&#8221; à propriedade <strong>Text</strong> do <strong>TextBox</strong></li>
</ul>
<p><strong>P.S</strong> Não esqueçam de trocar o <strong>varContent</strong> pelo objeto que contém os TextBox na sua aplicação, pode ser por um <strong>Panel</strong> por exemplo. Você também pode trabalhar também com <strong>Labels</strong>, <strong>ComboBox</strong>, <strong>Buttons</strong> e etc é so fazer o <strong>Casting</strong> determinando o tipo desejado, use a sua imaginação.</p>
<h2><span style="color: #0000ff;">O Que é esse Tal de Object?</span></h2>
<p>Primeiro você deve entender o que é um <a href="http://diariodecodigos.info/2009/07/tipos-valor-e-tipo-referencia-no-c/" target="_self">tipo-referência</a>, já entendido do assunto você agora tem que ter em mente que o <em>tipo-referência</em> mais importante no <strong>C#</strong> é o tipo <strong>OBJECT</strong> meu amigo&#8230;. que na verdade é um alias para <strong>System.Object</strong>!</p>
<p>Todos as classes existentes no <strong>C#</strong> são herdados do <strong>System.Object</strong> e uma variável tipo <strong>Object</strong> pode referenciar qualquer objeto existente!</p>
<h2><span style="color: #0000ff;">Boxing</span></h2>
<p>Quando você usa o <strong>Object</strong> para referenciar algo, você pode referenciar um <strong>tipo-valor</strong></p>
<pre class="brush: csharp;">
int numero = 8;
object o = numero;
</pre>
<p>Valores do tipo <strong>int</strong> ficam na pilha da memória, o <strong>object</strong> fica no heap. Todas referências obrigatoriamente devem apontar para o <strong>heap</strong> e não para a pilha, se o <strong>C#</strong> permitisse criar referencia para a pilha poderíamos ter sérios problemas de segurança.</p>
<p>Então o <strong>runtime</strong> aloca uma parte da memória no <strong>heap</strong> copia o valor da variável <strong>numero</strong> e agora sim ele faz o objeto &#8220;<strong>o</strong>&#8221; referenciar o valor no <strong>heap</strong>, essa cópia automática de um valor na pilha para o <strong>heap</strong> é chamado de <strong>boxing</strong>.</p>
<h2><span style="color: #0000ff;">Unboxing (casting)</span></h2>
<p>Depois de fazer o<strong> Boxing</strong> naturalmente você gostaria em alguma hora devolver esse valor que está no <strong>heap</strong> para uma variável <strong>tipo-valor</strong>:</p>
<pre class="brush: csharp;">
int numero = 8;
object o = numero;
int n2 = o; // ERRO!
</pre>
<p>Se tentar fazer isso você terá um erro em tempo de compilação, naturalmente isso não funcionará porque o compilador não confia em você!</p>
<p>Nós sabemos que o valor na variável &#8220;<strong>o</strong>&#8221; é equivalente a um inteiro, mas poderia ser qualquer outra coisa, como uma <strong>Classe </strong>criado por você, resumindo qualquer outra coisa mesmo! E isso não seria nada legal.</p>
<p>Para obter o valor referenciado pelo &#8220;<strong>o</strong>&#8221; será necessário fazer o <strong>unboxing</strong> (<strong>casting</strong>) dizendo o runtime que é seguro converter aquele valor referenciado, caso você esteja errado o casting lançará um <strong>exception</strong> (<strong>InvalodCastException</strong>), veja um exemplo:</p>
<pre class="brush: csharp;">
int numero = 8;
object o = numero;
int n2 = (int)o; // Agora sim!
</pre>
<p><strong>OBS:</strong> O boxing e unboxing são processos caros para o runtime, ele aloca bastante memória e faz muitas verificações, então procure não utilizar muito e utilize ele com atenção.</p>
<p><strong>OBS2:</strong> Você deverá estar preparado para capturar o <strong>exception</strong> lançado e trata-lo corretamente aí entra os operadores &#8220;<strong>is</strong>&#8221; e &#8220;<strong>as</strong>&#8221; para amenizar o nosso sofrimento!</p>
<h2><span style="color: #0000ff;">Casting de Dados Seguro</span></h2>
<p><strong><span style="text-decoration: underline;">Operador is</span></strong></p>
<p>Utilize o operador <em>is</em> para verificar se o tipo de objeto é o esperado:</p>
<pre class="brush: csharp;">
int numero = 8;
object o = numero;

if(o is int){
    int numero2 = (int)o; // Isso é seguro! o objeto &amp;quot;o&amp;quot; é um inteiro
}
</pre>
<p><span style="text-decoration: underline;"><strong>Operador as</strong></span></p>
<p>O operador <em>is</em> retorna <em>true</em> ou <em>false</em> já o operador <em>as</em> trabalha um pouco diferente.</p>
<p>Assim como o operador <em>is</em> no lado esquerdo recebe um objeto <em>tipo-referência</em> e à direita o tipo especificado. Se o casting for bem sucedido o operador &#8220;<strong><em>as</em></strong>&#8221; retornará o objeto se não retornará <strong>NULL</strong>.</p>
<pre class="brush: csharp;">
int numero = 8;
object o = numero;
int numero2 = o as int;
if(numero2 != null){
    Console.WriteLine(&amp;quot;Casting OK!&amp;quot;);
}
</pre>
<p>Até a próxima&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://diariodecodigos.info/2009/08/percorrendo-todos-textbox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Publicando uma App WindowsForms</title>
		<link>http://diariodecodigos.info/2009/08/publicando-uma-app-windowsforms/</link>
		<comments>http://diariodecodigos.info/2009/08/publicando-uma-app-windowsforms/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 17:17:01 +0000</pubDate>
		<dc:creator>paulodiogo</dc:creator>
				<category><![CDATA[Visual Studio 2008]]></category>

		<guid isPermaLink="false">http://diariodecodigos.info/?p=308</guid>
		<description><![CDATA[Este tópico é para meu querido amigo Alexandre, ele que pediu auhsuahs Vamos lá&#8230; qual o objetivo deste tópico? vou falar um pouco sobre publicação de app&#8217;s winforms pelo proprio VS2008. 1º Terminamos nossa app e queremos publica-la, ou seja, queremos fazer um setup e talz&#8230; 2º Queremos modificar algo, a pedido do cliente, ou]]></description>
			<content:encoded><![CDATA[<p>Este tópico é para meu querido amigo Alexandre, ele que pediu auhsuahs</p>
<p>Vamos lá&#8230; qual o objetivo deste tópico? vou falar um pouco sobre publicação de app&#8217;s winforms pelo proprio VS2008.</p>
<p><span id="more-308"></span></p>
<p>1º Terminamos nossa app e queremos publica-la, ou seja, queremos fazer um setup e talz&#8230;</p>
<p>2º Queremos modificar algo, a pedido do cliente, ou por que nos nossos testes vemos algum erro.</p>
<p>Ai vem a pergunta, como atualizar sem precisar ir a maquina do cliente, desinstalar e instalar novamente a nossa app.</p>
<p>Agora vou mostrar como publicar sem precisar ir la nas maquinas dos clientes, assim qnd fizermos alguma modificação o proprio usuario vai poder atualizar a app.</p>
<p>Publicando:</p>
<p>1º Vamos no nosso projeto clicamos com o botao direito e escolhemos a opção<strong> <span style="color: #ff0000;">Publish&#8230;</span></strong></p>
<p><strong><span style="color: #ff0000;"><span style="color: #000000;">Aqui vamos colocar o endereço onde nossa querida publicação vai ficar, não posso deixar de ressaltar que se este local ficar off suas atualizações não vão funfar.</span><br />
</span></strong></p>
<p><span style="color: #000000;"><br />
</span><img src="http://shopcart.site50.net/imagem_1.JPG" alt="Imagem 1" /></p>
<p>2º Geralmente fica o mesmo endereço. Aqui é o local de onde os usuarios vão instalar a app. Aqui fica a gosto.</p>
<p><img src="http://shopcart.site50.net/imagem_2.JPG" alt="Imagem 2" /></p>
<p>3º Nesta parte se e somente se, for uma app winforms vamos colocar esta opção, se for um site, ou se a sua app requer acesso a internet marque a opção de baixo.</p>
<p><img src="http://shopcart.site50.net/imagem_3imagem .JPG" alt="Imagem 3" /></p>
<p>4º Acabou só falta dar um Published =D</p>
<p><img src="http://shopcart.site50.net/imagem_4.JPG" alt="Imagem 4" width="567" height="448" /></p>
<p>Simples assim&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://diariodecodigos.info/2009/08/publicando-uma-app-windowsforms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Passando Form por Parâmetro</title>
		<link>http://diariodecodigos.info/2009/07/passando-form-por-parametro/</link>
		<comments>http://diariodecodigos.info/2009/07/passando-form-por-parametro/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 12:01:29 +0000</pubDate>
		<dc:creator>paulodiogo</dc:creator>
				<category><![CDATA[C# Dicas]]></category>
		<category><![CDATA[Visual Studio 2008]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[parametro]]></category>
		<category><![CDATA[referencia]]></category>

		<guid isPermaLink="false">http://diariodecodigos.info/?p=264</guid>
		<description><![CDATA[Bem rápido esse Post&#8230; passando um form por parâmetros para, com o propósito de mudar algum valor por meio de outro form&#8230; no meu exemplo eu estava fazendo um form para travar maquinas no Laboratório que administro aqui no trabalho&#8230; Vamos para os códigos: 1º vamos declarar uma variável privada do mesmo tipo do form]]></description>
			<content:encoded><![CDATA[<p>Bem rápido esse Post&#8230; passando um form por parâmetros para, com o propósito de mudar algum valor por meio de outro form&#8230; no meu exemplo eu estava fazendo um form para travar maquinas no Laboratório que administro aqui no trabalho&#8230; Vamos para os <em><strong>códigos</strong></em>:</p>
<p><span id="more-264"></span></p>
<p>1º vamos declarar uma variável privada do mesmo tipo do form que queremos modificar&#8230;</p>
<pre class="brush: csharp;">
private frmMaquinas form;
</pre>
<p>2º Declaramos um Construtor com um parâmetro do tipo do nosso form<br />
vejam que é o 1º parâmetro do nosso construtor</p>
<pre class="brush: csharp;">
public frmFaixa(frmMaquinas fm, String etd, Color cr)
        {
            InitializeComponent();
            this.form = fm;
            this.estado = etd;
            this.cor = cr;
        }
</pre>
<p>3ºUsamos um método se tiver no nosso form para modifica-lo</p>
<pre class="brush: csharp;">
this.form.liberarPorIntervalo(this.estado,this.cor,
                Convert.ToInt32(this.numericUpDown1.Value),
                Convert.ToInt32(this.numericUpDown2.Value));
</pre>
<p>Se não tiver um método o que podemos fazer&#8230; podemos modificar as variáveis que o nosso form tem, Propriedades etc..</p>
]]></content:encoded>
			<wfw:commentRss>http://diariodecodigos.info/2009/07/passando-form-por-parametro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mudar cor de linha de List Box</title>
		<link>http://diariodecodigos.info/2009/06/mudar-cor-de-linha-de-list-box/</link>
		<comments>http://diariodecodigos.info/2009/06/mudar-cor-de-linha-de-list-box/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 13:05:00 +0000</pubDate>
		<dc:creator>paulodiogo</dc:creator>
				<category><![CDATA[Visual Studio 2008]]></category>

		<guid isPermaLink="false">http://diariodecodigos.wordpress.com/2009/06/25/mudar-cor-de-linha-de-list-box/</guid>
		<description><![CDATA[private void listBox1_DrawItem(object sender, DrawItemEventArgs e) { &#60;span id=&#34;more-16&#34;&#62;&#60;/span&#62; e.DrawBackground(); Brush myBrush = Brushes.Black; switch (e.Index) { case 0: myBrush = Brushes.Red; break; case 1: myBrush = Brushes.Magenta; break; case 2: myBrush = Brushes.Green; break; case 3: myBrush = Brushes.Yellow; break; case 4: myBrush = Brushes.Tomato; break; } e.Graphics.FillRectangle(myBrush, e.Bounds); if (e.Index &#38;gt; -1) e.Graphics.DrawString(((ListBox)sender).Items[e.Index].ToString(),]]></description>
			<content:encoded><![CDATA[<pre class="brush: csharp;">private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
        {

&lt;span id=&quot;more-16&quot;&gt;&lt;/span&gt;

            e.DrawBackground();
            Brush myBrush = Brushes.Black;

            switch (e.Index)
            {
                case 0:
                    myBrush = Brushes.Red;
                    break;
                case 1:
                    myBrush = Brushes.Magenta;
                    break;
                case 2:
                    myBrush = Brushes.Green;
                    break;
                case 3:
                    myBrush = Brushes.Yellow;
                    break;
                case 4:
                    myBrush = Brushes.Tomato;
                    break;

              }

            e.Graphics.FillRectangle(myBrush, e.Bounds);

            if (e.Index &amp;gt; -1)
                e.Graphics.DrawString(((ListBox)sender).Items[e.Index].ToString(),
                    e.Font, Brushes.Black, e.Bounds);

             e.DrawFocusRectangle();

        }</pre>
]]></content:encoded>
			<wfw:commentRss>http://diariodecodigos.info/2009/06/mudar-cor-de-linha-de-list-box/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Mudar cor da linhas em Data Grid View</title>
		<link>http://diariodecodigos.info/2009/06/mudar-cor-da-linhas-em-data-grid-view/</link>
		<comments>http://diariodecodigos.info/2009/06/mudar-cor-da-linhas-em-data-grid-view/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 13:00:00 +0000</pubDate>
		<dc:creator>paulodiogo</dc:creator>
				<category><![CDATA[Visual Studio 2008]]></category>

		<guid isPermaLink="false">http://diariodecodigos.wordpress.com/2009/06/25/mudar-cor-da-linhas-em-data-grid-view/</guid>
		<description><![CDATA[private void dataGridView1_CellFormatting(object sender,DataGridViewCellFormattingEventArgs e) { dataGridView1.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.White; dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red; }]]></description>
			<content:encoded><![CDATA[<pre class="brush: csharp;">
private void dataGridView1_CellFormatting(object sender,DataGridViewCellFormattingEventArgs e)
{
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.White;
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://diariodecodigos.info/2009/06/mudar-cor-da-linhas-em-data-grid-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

