private void PrefixAmpersands(ref string value) {
// Due to a comctl32 problem, ampersands underline the next letter in the
// text string, but the accelerators don't work.
// So in this function, we prefix ampersands with another ampersand
// so that they actually appear as ampersands.
//
// Sanity check parameter
//
if (value == null || value.Length == 0) {
return;
}
// If there are no ampersands, we don't need to do anything here
//
if (value.IndexOf('&') < 0) {
return;
}
// Insert extra ampersands
//
StringBuilder newString = new StringBuilder();
for(int i=0; i < value.Length; ++i) {
if (value[i] == '&') {
if (i < value.Length - 1 && value[i+1] == '&') {
++i; // Skip the second ampersand
}
newString.Append("&&");
}
else {
newString.Append(value[i]);
}
}
value = newString.ToString();
}