internal
элементы видны всему коду в сборке, в которой они объявлены.
(И для других сборок, на которые ссылается атрибут [InternalsVisibleTo]
)
private
, элементы видны только декларирующему классу. (включая вложенные классы)
Внешний (не вложенный) класс не может быть объявлен private
, так как нет содержащей области действия, чтобы сделать его закрытым.
Чтобы ответить на вопрос, который вы забыли задать, protected
члены похожи на private
членов, но также видны во всех классах, которые наследуют декларирующий тип. (Но только для выражения, по крайней мере, типа текущего класса)
Эта статья очень полезна. Drag drop wpf
Этот код может быть вам полезен.
Point _startPoint;
bool _IsDragging = false;
void TemplateTreeView_PreviewMouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed ||
e.RightButton == MouseButtonState.Pressed && !_IsDragging)
{
Point position = e.GetPosition(null);
if (Math.Abs(position.X - _startPoint.X) >
SystemParameters.MinimumHorizontalDragDistance ||
Math.Abs(position.Y - _startPoint.Y) >
SystemParameters.MinimumVerticalDragDistance)
{
StartDrag(e);
}
}
}
void TemplateTreeView_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
_startPoint = e.GetPosition(null);
}
private void StartDrag(MouseEventArgs e)
{
_IsDragging = true;
object temp = this.TemplateTreeView.SelectedItem;
DataObject data = null;
data = new DataObject("inadt", temp);
if (data != null)
{
DragDropEffects dde = DragDropEffects.Move;
if (e.RightButton == MouseButtonState.Pressed)
{
dde = DragDropEffects.All;
}
DragDropEffects de = DragDrop.DoDragDrop(this.TemplateTreeView, data, dde);
}
_IsDragging = false;
}