*
Как видно из названия, возникает такой тип ошибки, когда вы, скорее всего, пытаетесь перебрать или найти значение из массива с не- существующий ключ.
Считаем, что вы пытаетесь показать каждую букву из $string
$string = 'ABCD';
for ($i=0, $len = strlen($string); $i <= $len; $i++){
echo "$string[$i] \n";
}
. Вышеприведенный пример сгенерирует ( онлайн-демонстрацию ):
A
B
C
D
Notice: Uninitialized string offset: 4 in XXX on line X
И, как только скрипт заканчивается эхом D
, вы получите ошибку, потому что внутри цикла for()
вы сказали PHP, чтобы показать вам от первого до пятого символа строки из 'ABCD'
Что, существует, но поскольку цикл начинает отсчитываться от 0
и эха D
к моменту достижения значения 4
, он выдает ошибку смещения.
Аналогичные ошибки:
Резюме всех предыдущих ответов, различные способы преобразования строки в цвет или кисть:
// best, using Color's static method
Color red1 = Color.FromName("Red");
// using a ColorConverter
TypeConverter tc1 = TypeDescriptor.GetConverter(typeof(Color)); // ..or..
TypeConverter tc2 = new ColorConverter();
Color red2 = (Color)tc.ConvertFromString("Red");
// using Reflection on Color or Brush
Color red3 = (Color)typeof(Color).GetProperty("Red").GetValue(null, null);
// in WPF you can use a BrushConverter
SolidColorBrush redBrush = (SolidColorBrush)new BrushConverter().ConvertFromString("Red");
D'oh. Через некоторое время взгляда я нашел:
Color.FromName(a.Value)
После попадения в "штангу". Оттуда это - короткий шаг к:
color = new SolidBrush(Color.FromName(a.Value));
я оставлю этот вопрос здесь для других....
Вы могли использовать отражение для этого:
Type t = typeof(Brushes);
Brush b = (Brush)t.GetProperty("Red").GetValue(null, null);
, Конечно, Вы захотите некоторую обработку ошибок / проверка диапазона, если строка будет неправильной.
Я соглашаюсь, что использование TypeConverters является лучшим методом:
Color c = (Color)TypeDescriptor.GetConverter(typeof(Color)).ConvertFromString("Red");
return new Brush(c);
Попытайтесь использовать TypeConverter
. Пример:
var tc = TypeDescriptor.GetConverter(typeof(Brush));
Другая альтернатива должна использовать отражение и пробежаться через свойства в SystemBrushes
.
Если Вы хотите, можно расширить это еще больше и позволить им определять значения для R, G и значения B. Тогда Вы просто называете Цвет. FromArgb (интервал r, интервал g, интервал b);
Строка для чистки:
myTextBlock.Foreground = new BrushConverter().ConvertFromString("#FFFFFF") as SolidColorBrush;
Вот мой случай!
A brush can be declared like this
Brush myBrush = new SolidBrush(Color.FromName("Red"));