PDA

View Full Version : سوال: readonly datagridview با امکان copy



mohsen.net
سه شنبه 28 دی 1389, 13:37 عصر
سلام
می خواهم Datagridview من readonly باشد و امکان copy هم داشته باشد
اگر Readonly کنم دیگر contextmenu را نمایش نمی دهد تا امکان کپی وجود داشته باشد .

مهدی فرزاد
سه شنبه 28 دی 1389, 16:09 عصر
سلام
اگر هدف شما از Readonly کردن فقط برای اینه که کار بر نتونه توش بنویسه ولی کپی بتونه بکنه پس
در PreviewKeyDow دیتا گریدتون بنویسید


private void personalDataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
{
e.Handled = true;
}

mohsen.net
سه شنبه 28 دی 1389, 18:21 عصر
روش خوبی بود اما مشکل این هست که اگر راست کلیک کنه و cut یا paste را بزنه باز هم عوض می شه
واسه این هم راهی هست؟

مهدی فرزاد
سه شنبه 28 دی 1389, 18:59 عصر
سلام
این راه ها که من میگم فقط پیشنهاده
میتونید یک استایل برای DataGridCellStyle درست کنید و در اون IsEnable مربوط به Border رو برابر false قرار بدید
اینجوری فقط گزینه Copy فعال هست

<Style x:Key="DataGridCellStyle1" TargetType="{x:Type DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True" IsEnabled="False">
<ContentPresenter x:Name="contentPresenter" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
و در دیتا گرید بنویسد

CellStyle="{DynamicResource DataGridCellStyle1}"