var word = "текст";
var replaceTo = "ТЕКСТОВЫЙ";
var res2 = string.Join(replaceTo, s.Split(new[] { word }, StringSplitOptions.None));
var res2 = s.Substring(0, words[0]);
for (var i = 0; i < words.Count; i++)
{
// позиция следующего слова
var nextPoint = i + 1 < words.Count ? words[i + 1] : s.Length;
// кол-во символов между текущим и следующим словом
var count = nextPoint - words[i] - word.Length;
// собираем результат по фрагментам
res2 += replaceTo + s.Substring(words[i] + word.Length, count);
}
IEnumerable<T>
, чтобы можно было использовать класс в foreach.e.KeyChar != (char)Keys.Back
то же самое, что и Symbol != "\b"
, потому что (char)Keys.Back == '\b'
будет истина. Но первый вариант чуть лучше тем, что явно указана клавиша - явное лучше неявного, ведь кто-то может не знать, что за \b.if (e.KeyChar != (char)Keys.Back && !Regex.Match(Symbol, @"[а-яА-Я]").Success )
{
e.Handled = true;
}
pictureBox.Image = new Bitmap(G.GetBitmap(), new Size((int)(G.GetBitmap().Width * valueSize), (int)(G.GetBitmap().Height * valueSize)));
public class MyConv : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var vm = value as MyViewModel;
if (vm == null) return Binding.DoNothing;
var config = System.Configuration.ConfigurationManager.AppSettings["MySetting"];
return config != null && config.ToLower() == "first"
? vm.FirstProperty
: vm.SecondProperty;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return Binding.DoNothing;
}
}
public abstract class BaseViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged([CallerMemberName] string propertyName = null)
{
var propertyChangedHandler = PropertyChanged;
if (propertyChangedHandler != null)
{
propertyChangedHandler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
public class DevVm : BaseViewModel
{
private string _title;
public string Title
{
get
{
return _title;
}
set
{
_title = value;
RaisePropertyChanged();
}
}
}
class SuperDevVm : DevVm
{
public int Value { get; set; }
}
public class MainVm : BaseViewModel
{
private readonly ObservableCollection<DevVm> _devList = new ObservableCollection<DevVm>
{
new DevVm {Title = "123"},
new DevVm {Title = "234"},
new SuperDevVm {Title = "345", Value = 100500},
new SuperDevVm {Title = "543", Value = 500100},
};
private DevVm _selectedItem;
public ObservableCollection<DevVm> DevList
{
get
{
return _devList;
}
}
public DevVm SelectedItem
{
get
{
return _selectedItem;
}
set
{
_selectedItem = value;
RaisePropertyChanged();
}
}
}
<Window x:Class="SimpleWpfApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SimpleWpfApp"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<local:MainVm/>
</Window.DataContext>
<DockPanel>
<ListBox ItemsSource="{Binding DevList}"
SelectedItem="{Binding SelectedItem}"/>
<ContentControl Content="{Binding SelectedItem}">
<ContentControl.Resources>
<DataTemplate DataType="{x:Type local:DevVm}">
<TextBlock Text="{Binding Title}"/>
</DataTemplate>
<DataTemplate DataType="{x:Type local:SuperDevVm}">
<TextBlock Background="Red">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} ({1})">
<Binding Path="Title" />
<Binding Path="Value" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
</DockPanel>
</Window>
<DataTemplate DataType="{x:Type local:DevVm}">
где-то в ресурсах (прямо в нём или в родителях).
line1 = sr1.ReadLine();
textBox1.Text = "не работает";
и посмотрел бы, зайдёт ли на эти строки.