1 и 3 являются целыми константами, поэтому Java выполняет целочисленное деление, результатом которого является 0. Если вы хотите написать двойные константы, вы должны написать 1.0
и 3.0
.
Я думаю, что понял его:
If treeNodeParent.IsExpanded = False Then Dim currentNode As TreeNode = TreeViewHosts.GetNodeAt(0, 0) treeNodeParent.Expand() currentNode.EnsureVisible() End If
лучший способ сделать это?
Я не парень VB, но в C# я делаю это этот путь:
Некоторые собственные функции Win32:
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int GetScrollPos(IntPtr hWnd, int nBar);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int SetScrollPos(IntPtr hWnd, int nBar, int nPos, bool bRedraw);
private const int SB_HORZ = 0x0;
private const int SB_VERT = 0x1;
метод А, который возвращает точку для текущего положения прокрутки:
private Point GetTreeViewScrollPos(TreeView treeView)
{
return new Point(
GetScrollPos((int)treeView.Handle, SB_HORZ),
GetScrollPos((int)treeView.Handle, SB_VERT));
}
метод А для установки положения прокрутки:
private void SetTreeViewScrollPos(TreeView treeView, Point scrollPosition)
{
SetScrollPos((IntPtr)treeView.Handle, SB_HORZ, scrollPosition.X, true);
SetScrollPos((IntPtr)treeView.Handle, SB_VERT, scrollPosition.Y, true);
}
Тогда при обновлении дерева сделайте следующее:
BeginUpdate();
Point ScrollPos = GetTreeViewScrollPos(treeMain);
// write your update code here
SetTreeViewScrollPos(treeMain, ScrollPos);
EndUpdate();
Я обнаружил, что лучше всего обернуть SetTreeViewScrollPosition (point)
с помощью BeginUpdate
и EndUpdate
...
private void treeViewXml1_Scroll(object sender, ScrollEventArgs e)
{
Point point = treeViewXml1.GetTreeViewScrollPosition();
treeViewXml2.BeginUpdate();
treeViewXml2.SetTreeViewScrollPosition(point);
treeViewXml2.EndUpdate();
}
private void treeViewXml2_Scroll(object sender, ScrollEventArgs e)
{
Point point = treeViewXml2.GetTreeViewScrollPosition();
treeViewXml1.BeginUpdate();
treeViewXml1.SetTreeViewScrollPosition(point);
treeViewXml1.EndUpdate();
}