Ir para conteúdo
Fórum Script Brasil
  • 0

Trocar Teclas


§uiciDa£

Pergunta

Eae galera eu to fazzendo um editor pelo RichTextBox...

e este editor não pode aceitra a tecla n...

como eu faço pra q quando o usuario precionar a tecla n, não acontteça nd no editor ?

já tentei

if(e.KeyChar == (char)'n')

{

SendKeys.send("");

}

e algumas otras opções, se alguém souber, por favor me avise...

t+

Link para o comentário
Compartilhar em outros sites

19 respostass a esta questão

Posts Recomendados

  • 0

Sim, você pode fazer isso assim:

foreach (string linha in richTextBox1.Lines) 
{
	MessageBox.Show(new string(linha[0], 1));
}

Note que linha[0] *já* te retorna um char com o primeiro caracter da linha. Tive que gerar uma string a partir disso só para mostrar no MessageBox (se o caso for outro, talvez você nem precise).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

hum vlww cara...

tipo, e se eu quiser pegar

a primeira letra, mais de qualquer linha (uma linha q eu não sei), tipo eu tnho q fazer uma função q verifica se o cursor esta na 1ª coluna, mais de uma linha qualquer...

se você soubeer me da uma ajud,a porque eu já tentei de td x(...

t++

Link para o comentário
Compartilhar em outros sites

  • 0

Cara... acho que você não pegou a essência do exemplo anterior. A propriedade Lines é um vetor ou coleção, ou seja, você pode se referir a uma determinada linha a partir de um índice. Exemplo:

  	// 1º caracter da primeira linha
  	String c1 = new string(richTextBox1.Lines[0][0], 1);

  	// 1º caracter da segunda linha;
  	String c2 = new string(richTextBox1.Lines[1][0], 1);

  	// 1º caracter da n-ésima linha;
  	String cn = new string(richTextBox1.Lines[n][0], 1);

Certo? wink.gif

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

poxa veio realmente eu num peguei esse negocio O.o...

tipo me dauma força, eu to com um dódigo no KeyPress de um RichtextBox (code)

olha o q eu qro faze

  	if(e.KeyChar == (char)'G')
  	{
    code.SelectionStart = code.TextLength;
    code.SelectionLength = 1;
    code.SelectionColor = Color.FromArgb(255,0,0);
  	}


... ... ...
mais esse códdigo só pode funcionar se for o primeiro caracter de qualquer linha... eu tentei fazer assim ó:
String c1 = new string(richTextBox1.Lines[0][0], 1);
if(c1 == "g")
...
...
...
mais quando eu digito algum caracter ele da esse erro :
o Indice estava fora dos limites da matriz...

espero q você possa me ajudar...

t++

Link para o comentário
Compartilhar em outros sites

  • 0

Você quer deixar a primeira letra de cada linha com uma cor diferente? Já teve um outro tópico a respeito disso (colorir um texto na RichTextBox) no qual eu disse que utilizar a seleção *não* é a melhor maneira (a melhor é mudar diretamente no RTF). Experimente fazer uma busca e veja se aquela solução resolve o seu caso. Se não, dá um grito aí que a gente vê o que consegue. wink.gif

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Então havia sido eu mesmo que tnha perguntado..., e eu não consegui fazer com o codigo RTF (falta de pratica) eu havia pego um componente pra afzer o q eu qria, mais pra essa duvida minha não axei nenhum componente nem nd a respeito...

a única coisa que preciso fazer é verificar se foi digitada uma palavra na primeira coluna de uma linha...

se você souber... me ajuda plzz wink.gif

-

Ae cara, você conhece alguma apostila sobre codificação RTF ??

porque eu já tentei de todos os jeitos aprender, inclusive salvar u arquivo .RTF e abrir no bloco de notas pra estudar sua estrutura, mais ,´e muito confuso...

t++

Editado por §uiciDa£
Link para o comentário
Compartilhar em outros sites

  • 0

a única coisa que preciso fazer é  verificar se foi digitada uma palavra na primeira coluna de uma linha...

Como assim "uma palavra na primeira coluna de uma linha"? blink.gif

Ae cara, você conhece alguma apostila sobre codificação RTF ??

porque eu já tentei de todos os jeitos aprender, inclusive salvar u arquivo .RTF e abrir no bloco de notas pra estudar sua estrutura, mais ,´e muito confuso...

Cara... não conheço nenhuma apostila sobre isso não. O pouco que sei eu aprendi olhando a estrutura, como você fez.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

a primeira coluna, eu digo a primeira letra ;P

bom, vlw Gray... eu vo ve se consigo algum resultado...

mais se você tiver alguma ideia ou algo me fale plzz ^^...

--

Ae Gray, eu montei este codigo, mais ele esta com muitos erros :

  	string comeco = "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1046{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}}";
  	string cores = "{\\colortbl;\\red0\\green0\\blue255; \\red0\\green255\\blue0;}";
  	string inicio = "\\viewkind4\\uc1\\pard\\f0\\fs17";
  	string texto = codigo.Text;
  	int cursor = codigo.SelectionStart;

  	if(e.KeyChar == 'G')
  	{
    e.Handled = true;
    texto = texto + "\\cf2 G \\cf0";
    codigo.Rtf = comeco + cores + inicio + texto + "\\par";
    codigo.SelectionStart = cursor+1;
  	}

tipo:

Depos de digitar G, todos as letras fikam do cor do G... e a seleção etsa voltando errado

se você conseguir me ajudar a resolver este codigo eu agradeceria muito ;;;

t+

Link para o comentário
Compartilhar em outros sites

  • 0

Hummm... esse seu código me deu uma idéia. biggrin.gif Coloque o seguinte código em um botão e veja o resultado quando o mesmo é clicado:

  	string comeco = "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1046{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}}";
  	string cores = "{\\colortbl;\\red0\\green0\\blue255; \\red0\\green255\\blue0;}";
  	string inicio = "\\viewkind4\\uc1\\pard\\f0\\fs17";

  	string nrtf = comeco + cores + inicio;
  	RTF1.Lines = new string[] {"um teste", "outro teste", "mais outro teste", "e ainda outro teste"};

  	foreach (string linha in RTF1.Lines) 
  	{
    nrtf += "\\cf1 " + linha[0] + "\\cf0 " + linha.Substring(1) + "\\par";
  	};
  	RTF1.Rtf = nrtf;

Note que a RichTextBox aí se chama RTF1. Sacou? wink.gif

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

putz gray, eu tentei asim ó:


  	int sel = RTF1.SelectionStart;
  	string comeco = "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1046{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}}";
  	string cores = "{\\colortbl;\\red0\\green0\\blue255; \\red0\\green255\\blue0;}";
  	string inicio = "\\viewkind4\\uc1\\pard\\f0\\fs17";

  	string nrtf = comeco + cores + inicio;
  	//RTF1.Lines = new string[] {"Gum teste", "Goutro teste", "mais outro teste", "e ainda outro teste","Gay"};

  	foreach (string linha in RTF1.Lines) 
  	{
    if(linha.StartsWith("G") == true)
    {
    	nrtf += "\\cf1 " + linha[0] + "\\cf0 " + linha.Substring(1) + "\\par";
    }
    /*else
    {
    	nrtf += "\\cf0 " + linha[0] + "\\cf0 " + linha.Substring(1) + "\\par";
    }*/
  	};
  	RTF1.Rtf = nrtf;
  	RTF1.SelectionStart = sel;
  }

no KetPress, mais ele não lê o ENTER, ou seja não pula linha eu vo ve se xego a algum consenço aqui ^^

t++

Link para o comentário
Compartilhar em outros sites

  • 0

EU estou fazendo um pograma grafico para CNC (torno)

ou seja, ele desenha uma peça de acordo com as cordenadas...

tudo já esta pronto, e esta funcionando numa boa...

só falta eu fazer o editor de códigos...

pois a sinte-se seria assim ó:

G1.X100.Z100# //vai usar o comando G... o x move para 100 e o Z para 100

mais o q acontece é q fika muito confuso varias linhas disso, por isso eu gostaria de colorir o código ^^...

t+

Link para o comentário
Compartilhar em outros sites

  • 0
EU estou fazendo um pograma grafico para CNC (torno)

ou seja, ele desenha uma peça de acordo com as cordenadas...

tudo já esta pronto, e esta funcionando numa boa...

só falta eu fazer o editor de códigos...

pois a sinte-se seria assim ó:

G1.X100.Z100# //vai usar o comando G... o x move para 100 e o Z para 100

mais o q acontece é q fika muito confuso varias linhas disso, por isso eu gostaria de colorir o código ^^...

t+

Ah, ok. Mas, você não pode mudar a cor de todos os Gs do texto? Só podem os Gs que iniciam uma linha? De qualquer forma, para ambos, as soluções já estão nos posts acima.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
bom de preferencia os q iniciam, mais se não tiver como, pode ser todos...

se você axar uma siada por favor poste ^^

A maneira mais fácil que encontrei foi deixar todos os primeiros caracteres de cada linha em uma cor diferente (seja G ou qualquer outro). Experimente colocar o seguinte no evento KeyPress da RTF:

  	string comeco = "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1046{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}}";
  	string cores = "{\\colortbl;\\red0\\green0\\blue255; \\red0\\green255\\blue0;}";
  	string inicio = "\\viewkind4\\uc1\\pard\\f0\\fs17";

  	string nrtf = comeco + cores + inicio;
  	int pos = RTF1.SelectionStart;

  	foreach (string linha in RTF1.Lines) 
  	{
    if (linha.Length>0)
    	nrtf += "\\cf1 " + linha[0] + "\\cf0 " + linha.Substring(1) + "\\par";
    else
    	nrtf += "\\cf1 \\cf0 ";
  	}
  	RTF1.Rtf = nrtf;
  	RTF1.SelectionStart = pos;

E veja o resultado. smile.gif

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Pow Gray, muito obrigado pela ajuda...

graças a você o programa ta quase pronto, quando eu acabar eu posto ele aqui caso alguém queira ver o código ^^

t+

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...