c# - Cambiando el color de la cuerda
string dictionary (3)
Agregue una referencia al KVP en el diccionario a la propiedad Etiqueta del cuadro de texto. Cuando el usuario cambia el color, obtenga el KVP de la propiedad Etiqueta y cambie el valor en el KVP. Proporciono información sobre la propiedad Etiqueta en mi blog C # Winforms y la etiqueta Hidden Association . WPF / Silverlight también usa la propiedad Etiqueta en los controles también ..
--- Editar por solicitud de usuario ---
No estoy seguro de por qué necesita enumerar un diccionario. El objetivo de un diccionario es obtener rápidamente la clave. Mi ejemplo usa eso y no hace el ciclo for.
... La ubicación de inicialización ...
var myDictionary = new Dictionary<string, Tuple<string, System.Drawing.Color>>()
{
{ "Black", new Tuple<string,System.Drawing.Color>("White", Color.Green) },
{ "White", new Tuple<string,System.Drawing.Color>("Black", Color.Red) }
};
... (más tarde en el código) ...
vacío privado btnTrans_Click (remitente del objeto, EventArgs e)
{
var key = inputBx.Text; // Let us say "White"
if (myDictionary.ContainsKey(key))
{
var targetColor = myDictionary[key]; // Just get the value
outputBx.Select(0, targetColor.Item1.Length);
outputBx.SelectionColor = targetColor.Item2;
outputBx.Text = targetColor.Item1;
}
else
{
outputBx.Text = "Unknown";
}
}
Eche un vistazo al artículo de mi blog sobre diccionarios para más información Trucos del diccionario C #
De acuerdo, este es un resumen de mi última pregunta, pero tengo el código:
private void btnTrans_Click(object sender, EventArgs e)
{
var abrvStr = inputBx.Text;
foreach (var kvp in d)
{
abrvStr = abrvStr.Replace(kvp.Key, kvp.Value);
}
outputBx.Text = abrvStr;
}
Básicamente es parte de un programa de diccionario, de modo que cuando ingresa una línea de texto en el cuadro de texto 1 aparece en el cuadro de texto 2 con una palabra reemplazada del cuadro de texto 1 en el dicitonario. Entonces, si el negro, el blanco está en el diccionario y yo entro, el muro es negro. La pared es blanca aparecerá en el cuadro de texto 2. Así que todo está bien.
En este momento la parte difícil, ¿cómo voy a modificar eso para permitirme tener la palabra modificada en el cuadro de texto 2 como el color rojo. Entonces en mi ejemplo anterior, la pared es blanca . Blanco sería rojo en la línea de salida de texto.
Tenga en cuenta que estoy usando RichTextBoxes
C # Language!
Puede usar la propiedad SelectionColor
de RichTextBox
. Comience seleccionando la palabra que desea formatear
string word = "white";
int start = richTextBox1.Find(word);
if (start >= 0) {
richTextBox1.Select(start, word.Length);
richTextBox1.SelectionColor = Color.Red;
}
Para construir sobre la respuesta de Oliver Jacot-Descombes :
private void btnTrans_Click(object sender, EventArgs e)
{
var abrvStr = inputBx.Text;
foreach (var kvp in d)
{
abrvStr = abrvStr.Replace(kvp.Key, kvp.Value);
int start = abrvStr.IndexOf(kvp.Value);
if(start >= 0)
{
richTextBox1.Text = abrvStr;
richTextBox1.Select(start, kvp.Value.Length);
richTextBox1.SelectionColor = Color.Red;
}
}
}
Utilizaría una declaración de cambio en el valor del diccionario para obtener el color que desea cambiar la selección. Tendrá que modificar eso para que se ajuste a los valores de su diccionario, así como a los colores que desee.