十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
先选中要改名的窗体,在属性里找Caption属性,一般第一个窗体都默认Form1,然后想改成什么就改成什么。
网站的建设创新互联专注网站定制,经验丰富,不做模板,主营网站定制开发.小程序定制开发,H5页面制作!给你焕然一新的设计体验!已为成都白乌鱼等企业提供专业服务。
或者在代码中你想改窗体名的地方,比如
Private Sub Form_Load()
formname.caption=‘窗体名’
End Sub
formname 是窗体这个实例的名字,用于引用该实例。
窗体名 是显示在这个窗体最上面的那个名字
可以将Form1里的串口公开,然后在Form2里添加对DataReceived事件的处理
Form1.Designer.cs中将
private System.IO.Ports.SerialPort port;改为
publice System.IO.Ports.SerialPort port;
然后在Form2里加上
Form1.port.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(port_DataReceived);
最后在
void port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
在这里进行处理就可以了;
}
这个是C#的,VB的你自己转一下
private const int GWL_STYLE = (-16);
private const int GWL_EXSTYLE = (-20);
private const uint WS_EX_LAYERED = 0x80000;
private const uint WS_EX_TRANSPARENT = 0x20;
private const uint WS_THICKFRAME = 262144;
private const uint WS_BORDER = 8388608;
/// summary使指定 「 see cref="IntPtr"/ 句柄」 窗体 边框样式变为无边框。/summary
public static uint 无边框窗体(IntPtr 句柄) {
uint style = API_窗口.GetWindowLong(句柄, GWL_STYLE);
style = ~WS_BORDER;
style = ~WS_THICKFRAME;
return API_窗口.SetWindowLong(句柄, GWL_STYLE, style); ;
}
API窗口静态类
[DllImport("user32", EntryPoint = "SetWindowLong")]
public static extern uint SetWindowLong(IntPtr hwnd, int nIndex, uint dwNewLong);
[DllImport("user32", EntryPoint = "GetWindowLong")]
public static extern uint GetWindowLong(IntPtr hwnd, int nIndex);
修改窗口位置
/// summary
/// 设置窗体的位置和大小。
/// /summary
/// param name="hWnd"/param
/// param name="hWndInsertAfter"用于标识在z-顺序的此 CWnd 对象之前的 CWnd 对象。
/// para/para如果uFlags参数中设置了SWP_NOZORDER标记则本参数将被忽略。可为下列值之一:
/// para/paraHWND_BOTTOM:值为1,将窗体置于Z序的底部。如果参数hWnd标识了一个顶层窗体,则窗体失去顶级位置,并且被置在其他窗体的底部。
/// para/paraHWND_NOTOPMOST:值为-2,将窗体置于所有非顶层窗体之上(即在所有顶层窗体之后)。如果窗体已经是非顶层窗体则该标志不起作用。
/// para/paraHWND_TOP:值为0,将窗体置于Z序的顶部。
/// para/paraHWND_TOPMOST:值为-1,将窗体置于所有非顶层窗体之上。即使窗体未被激活窗体也将保持顶级位置。/param
/// param name="x"窗体新的x坐标。如hwnd是一个子窗体,则x用父窗体的客户区坐标表示/param
/// param name="y"窗体新的y坐标。如hwnd是一个子窗体,则y用父窗体的客户区坐标表示/param
/// param name="Width"指定新的窗体宽度/param
/// param name="Height"指定新的窗体高度/param
/// param name="wFlags"/param
/// returns/returns
[DllImport("user32.dll", CharSet = CharSet.Ansi, EntryPoint = "SetWindowPos")]
public static extern int SetWindowPos(IntPtr hWnd, hWndInsertAfter hWndInsertAfter, int x, int y, int Width, int Height, wFlags wFlags);
/// summary
/// 调整指定 「 see cref="IntPtr"/ 句柄」 窗体的位置和尺寸。
/// /summary
/// param name="句柄"指定 「 see cref="IntPtr"/ 句柄」 窗体/param
/// param name="x"横坐标/param
/// param name="y"纵坐标/param
/// param name="w"宽/param
/// param name="h"高/param
public static int 调整窗体(IntPtr 句柄, int x, int y, int w, int h) {
return API_窗口.SetWindowPos(句柄, 0, x, y, w, h, wFlags.SWP_NOZORDER);
}
/// summary
/// 调整指定 「 see cref="IntPtr"/ 句柄」 窗体的位置。
/// /summary
/// param name="句柄"指定 「 see cref="IntPtr"/ 句柄」 窗体/param
/// param name="x"横坐标/param
/// param name="y"纵坐标/param
public static int 调整窗体位置(IntPtr 句柄, int x, int y) {
return API_窗口.SetWindowPos(句柄, 0, x, y, 0, 0, wFlags.SWP_NOSIZE | wFlags.SWP_NOZORDER);
}
首先窗口也是一个类,而显示出来的可以操作的那个窗口则是这个类的实例
你的意思是点击a的按钮之后单纯更新b的数据还是要改变b上面的控件显示的数据?
如果是前者,也就是b不用在显示上有任何变动的话,那么:
如果b是a的子窗口,那把b窗口的变量名变成是a的全局变量,然后再b把那个要变的数据设为全局并且是public,这样通过“b窗口变量名.要变的数据”就能访问到b里面的变量
如果b不是别人子窗口那么b就不具备变量名了(比如说你是要从子窗口改变主窗口的变量),那你只能通过b的类名(就是name属性)来访问它的数据,这时就只能把你要改的那个数据设为static了。
如果你懂了前面我说的,然后你问题是后者,就是说要通过a的按钮改变b的控件的状态的话,那么由于b上面的控件不是public的,所以没法访问,那么,
方法一:在实例化b之后,把b上面要改的那个控件作为变量传给a
方法二:有时因为各种原因无法使用方法一,那就只能把你将要做的修改做成b里面一个带变量的函数,但由于静态函数不能调用控件,所以要另外定义一个委托,然后设置一个该委托的静态全局变量,然后再b初始化的时候用这个函数作为变量执行构造函数,这样就能在a调用b的那个更改控件状态的函数了。
简单总结一下:把设计的窗体当成类,把实际操作的窗体看成这些类实体化后的变量,然后通过全局的公共变量、函数进行互动,由于主窗体是系统自动打开的,所以没有变量名,那就只能通过类名来访问,所以要把需要被访问的变量、函数设为静态,但由于静态函数无法访问控件,所以只能设置静态的委托变量并在窗体实例化的时候加载那个要访问的非静态函数。
重新编译
还不行.就去 你项目目录中的bin\Debug目录里面把里面的exe程序删除了.再重新生成一下.