解决方案 »
- 把一个winform中的datagridview中的数据全部添加到另一个winform中datagridview中
- 使用SMO向SQL SERVER建表的问题
- Forms.Owner
- usercontrol 能否串行化?
- winform程序在远程桌面的时候不运行
- C# 有没有一个方法返回上次选中的行,比如现在选中第55行,又选中102行,要怎样返回到第一次选中的55行,是否有快捷键?
- ComboBox
- 用xsl转换xml的问题
- 请问在comboBox的改变时显示出数据.
- 一个简单的问题,关于实例化对象
- 我用格式“F4”,结果数据“12.5120”在DataGridView单元格中显示为“12.512”,最后一位0被省掉了,如何保留最后一位0
- 求助
不过前提都是要有窗体
不能使用鼠标消息,因为程序A点击TabPage的标题,会执行事件,我不希望事件被执行,只想切换页面。
这里有个帖子
然后你可以在需要切换tab页的界面调用切换页面事件模拟传入参数。定义一个变量或者判断sender参数是否为空 在事件里面判断然后判断是否执行该方法
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Text;namespace Text
{
public class Program
{
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern UInt32 SendMessage(IntPtr hWnd, UInt32 Msg, UInt32 wParam, UInt32 lParam); public const UInt32 TCM_FIRST = 0x1300;
public const UInt32 TCM_GETIMAGELIST = (TCM_FIRST + 2);
public const UInt32 TCM_SETIMAGELIST = (TCM_FIRST + 3);
public const UInt32 TCM_GETITEMCOUNT = (TCM_FIRST + 4);
public const UInt32 TCM_GETITEMA = (TCM_FIRST + 5);
public const UInt32 TCM_GETITEMW = (TCM_FIRST + 60);
public const UInt32 TCM_SETITEMA = (TCM_FIRST + 6);
public const UInt32 TCM_SETITEMW = (TCM_FIRST + 61);
public const UInt32 TCM_INSERTITEMA = (TCM_FIRST + 7);
public const UInt32 TCM_INSERTITEMW = (TCM_FIRST + 62);
public const UInt32 TCM_DELETEITEM = (TCM_FIRST + 8);
public const UInt32 TCM_DELETEALLITEMS = (TCM_FIRST + 9);
public const UInt32 TCM_GETITEMRECT = (TCM_FIRST + 10);
public const UInt32 TCM_GETCURSEL = (TCM_FIRST + 11);
public const UInt32 TCM_SETCURSEL = (TCM_FIRST + 12);
public const UInt32 TCM_HITTEST = (TCM_FIRST + 13);
public const UInt32 TCM_SETITEMEXTRA = (TCM_FIRST + 14);
public const UInt32 TCM_ADJUSTRECT = (TCM_FIRST + 40);
public const UInt32 TCM_SETITEMSIZE = (TCM_FIRST + 41);
public const UInt32 TCM_REMOVEIMAGE = (TCM_FIRST + 42);
public const UInt32 TCM_SETPADDING = (TCM_FIRST + 43);
public const UInt32 TCM_GETROWCOUNT = (TCM_FIRST + 44);
public const UInt32 TCM_GETCURFOCUS = (TCM_FIRST + 47);
public const UInt32 TCM_SETCURFOCUS = (TCM_FIRST + 48);
public const UInt32 TCM_SETMINTABWIDTH = (TCM_FIRST + 49);
public const UInt32 TCM_DESELECTALL = (TCM_FIRST + 50);
public const UInt32 TCM_HIGHLIGHTITEM = (TCM_FIRST + 51);
public const UInt32 TCM_SETEXTENDEDSTYLE = (TCM_FIRST + 52); // optional wParam == mask
public const UInt32 TCM_GETEXTENDEDSTYLE = (TCM_FIRST + 53); static void Main(string[] args)
{
IntPtr h = new IntPtr(句柄自己取);
UInt32 count = SendMessage(h, TCM_GETITEMCOUNT, 0, 0);
Console.WriteLine("共有 " + count + " 个分页"); UInt32 index = SendMessage(h, TCM_GETCURSEL, 0, 0);
Console.WriteLine("当前选中第 " + (index + 1) + " 页"); if (index == 0)
{
index = count - 1;
}
else
{
index = 0;
} SendMessage(h, TCM_SETCURSEL, index, 0);
Console.WriteLine("已跳转到 " + (index + 1) + " 页"); Console.ReadKey();
}
}
}非常简单
上面例子中的句柄是TabControl的句柄,我不知道, 我只知道每个TabPage的句柄
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);或者[DllImport("user32.dll", ExactSpelling=true, CharSet=CharSet.Auto)]
public static extern IntPtr GetParent(IntPtr hWnd);TabPage的句柄怎么取出来的?难道不用先取出TabControl句柄才能取TabPage句柄?