c# 的窗体form的FormBorderStyle属性设为None 运行后怎么不能拖拽呀??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 的窗体form的FormBorderStyle属性设为None 运行后怎么不能拖拽呀??相关的知识,希望对你有一定的参考价值。

你设置了窗体边框为none,当然拖动不了了,要是想实现点击窗体里面拖动,可以看下这个http://blog.csdn.net/cleopard/article/details/38900691 参考技术A 试着这样做 思路:
1、在鼠标移动到四个边和四个顶点的时候改变鼠标的图标,提示用户进行拖动操作
2、在这些关键点(边、顶点)地方判断用户是否在鼠标左键按下过程中进行了鼠标移动操作
3、在上一步鼠标移动过程中设置窗体位置和大小。
参考技术B 亲自试验了
//调用API
usingSystem.Runtime.InteropServices;
[DllImport("user32.dll")]
publicstaticexternboolReleaseCapture();
[DllImport("user32.dll")]
publicstaticexternboolSendMessage(IntPtr hwnd, intwMsg, intwParam, intlParam);publicconstintWM_SYSCOMMAND = 0x0112;
publicconstintSC_MOVE = 0xF010;publicconstintHTCAPTION = 0x0002;
在空间的_MouseDown中加入如下代码:如:
privatevoidForm1_MouseDown(objectsender, System.Windows.Forms.MouseEventArgs e)ReleaseCapture();SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);本回答被提问者和网友采纳

C# winform form窗体与class类的问题

Form1,Class1,Form1中有个button1,按钮初始化Enabled=false
通过Form1的load()方法,加载Class1中的方法,Class1中的方法是将Form1的按钮Enabled=true;
code 如下:
//Form1
public partial class Form1 : Form

Class1 c;
public Form1()

InitializeComponent();

private void Form1_Load(object sender, EventArgs e)

c = new Class1();
c.aa();


//Class1
public class Class1

Form1 f1;
public void aa()

f1 = new Form1();
f1.button1.Enabled = true;


以上代码无法实现Form1的按钮为可用,运行后那按钮仍然是灰的。
求解!!

额 我知道了 这个问题你思路是对了 但是写错了 你看, 你现在Form1(1)里面实例化了Class1的对象 然后又在Class1里面重新实例化Form1(2)的对象 但是你要知道这个时候Form1(1)和Form1(2)是两个对象 他们是不想相等的 就好比我和你 虽然都是人 但我们不相等。 你本来有一个Form1了 但是当你调用Class1 的时候又重新“建造”了一个Form1 他们两个不是同一个东西!!!
解决方法 : 重写Class1的构造方法 给它一个参数 参数是一个Button按钮
然后在Form1实例化Class1的时候 把那个button放在里面就好了
参考技术A 把form1作为参数传给class1,而不是重新定义一个,如下代码

public partial class Form1 : Form

Class1 c;
public Form1()

InitializeComponent();

private void Form1_Load(object sender, EventArgs e)

c = new Class1(this);
c.aa();


//Class1
public class Class1

public Class1(Form1 f)

f1=f;

Form1 f1;
public void aa()

f1.button1.Enabled = true;

参考技术B 你又定义了一个form1的实例...
改成
public class Class1
public void aa(Button btn)

btn.Enabled = true;


调用的时候直接把button当参数传进去
c = new Class1();
c.aa(button1);本回答被提问者和网友采纳
参考技术C 类中的f1 是你自己定义的 不是窗体 form1 啊 ,这个问题你只要在窗体中定义一个方法就行了。不要搞得那么复杂! 参考技术D 因为你的类中的Form1跟你窗体的form1不是同一个对象,你在下面的类中用f1.Show();就知道了

以上是关于c# 的窗体form的FormBorderStyle属性设为None 运行后怎么不能拖拽呀??的主要内容,如果未能解决你的问题,请参考以下文章

C# Winform多个窗体界面间的切换

C# winform form窗体与class类的问题

winform 窗体加载的问题,C#里不同Panel中窗体的调用

winform 窗体加载的问题,C#里不同Panel中窗体的调用

C# 先显示窗体,后运行form_load程序

C# winform 关闭窗体后在打开 如何让打开的窗体还是原窗体 且打开的窗体还是原状态