说明:记录 C# form 窗体的各种操作

1. C# form 窗体居中显示

// 获取屏幕的宽度和高度
int screenWidth = Screen.PrimaryScreen.Bounds.Width;
int screenHeight = Screen.PrimaryScreen.Bounds.Height;

// 设置窗体的位置
this.StartPosition = FormStartPosition.Manual;
this.Left = (screenWidth - this.Width) / 2;
this.Top = (screenHeight - this.Height) / 2;

2. C# form 窗体设置最大、最小尺寸

C#: form 窗体的各种操作-LMLPHP

3. C# form 窗体大小改变时控件跟着变大、移动

        在C# Win Form中,可以通过设置控件的Anchor属性来实现窗口拉大时其他控件跟着变大的效果。Anchor属性指定了控件与其父容器之间的边界锚定方式。

        例如,如果你想要一个按钮在窗口拉大时保持在左上角不变,可以将该按钮的Anchor属性设置为Left和Top。这样,当窗口拉大时,按钮会保持在窗口的左上角位置。

        以下是一个示例代码,演示了如何设置按钮的Anchor属性来实现窗口拉大时其他控件跟着变大的效果:

private void Form1_Load(object sender, EventArgs e)
{
    // 设置按钮1的Anchor属性为Left和Top
    button1.Anchor = AnchorStyles.Left | AnchorStyles.Top;
    // 设置按钮2的Anchor属性为Left和Top
    button2.Anchor = AnchorStyles.Left | AnchorStyles.Top;
}

        在上述示例中,按钮1和按钮2的Anchor属性都被设置为Left和Top,这意味着它们会保持在窗口的左上角位置,当窗口拉大时,它们会随着窗口的大小变化而变大。

4. C# form 窗体尺寸改变事件添加

应用:如 C# form 窗口怎么设置最小尺寸,拖动改变大小时达到最小尺寸不再改变。
注意:这只是应用举例,最小尺寸可以在窗口属性中设置,下面的方法在拖到最小时窗口显示效果会抖动。

C#: form 窗体的各种操作-LMLPHP

        这段代码将窗口的最小尺寸设置为300x200,并且在窗口大小改变时检查窗口的宽度和高度是否小于最小尺寸,如果是,则将宽度和高度设置为最小尺寸。

private void Form1_Load(object sender, EventArgs e)
{
    this.MinimumSize = new Size(300, 200); // 设置窗口的最小尺寸为300x200
    this.Resize += new EventHandler(Form1_Resize); // 添加窗口大小改变的事件处理程序
}

private void Form1_Resize(object sender, EventArgs e)
{
    if (this.Width < 300)
    {
        this.Width = 300; // 如果窗口宽度小于最小宽度,将宽度设置为最小宽度
    }
    if (this.Height < 200)
    {
        this.Height = 200; // 如果窗口高度小于最小高度,将高度设置为最小高度
    }
}

5. C# Form 界面关闭鼠标右键功能

        关键词:关闭鼠标右键,禁用鼠标右键
        在C# Windows Forms 应用程序中,要关闭鼠标右键功能,您可以通过设置窗体的 Form 属性来实现。具体来说,您可以将 Form 的 RightToLeftLayout 属性设置为 true。这将导致窗体上的控件(如菜单和工具栏)在鼠标右键单击时不会显示上下文菜单。
        以下是一个简单的示例,演示如何关闭鼠标右键功能:

public partial class MyForm : Form  
{  
    public MyForm()  
    {  
        InitializeComponent();  
        this.RightToLeftLayout = true; // 关闭鼠标右键功能  
    }  
}

        请注意,这将影响窗体上的所有控件,包括那些没有默认上下文菜单的控件。因此,您需要确保这是您真正想要的行为。
        另外,如果您只想针对特定的控件禁用右键菜单,您可以使用控件的 ContextMenuStrip 属性并将其设置为 null。例如:

// 假设有一个名为 myControl 的控件  
myControl.ContextMenuStrip = null; // 禁用该控件的右键菜单

这种方法只会影响指定的控件,而不会影响窗体上的其他控件。

6. C# 不同form 中定义的变量怎么互相引用(共用)

        在C#中,如果你想在不同的Form之间共享变量,通常有以下几种方法:

        可以在程序的类级别定义一个全局变量,所有的Form都可以访问这个变量。但是,这种方法并不推荐,因为它可能会导致代码难以维护和理解。

public static class GlobalVariables  
{  
    public static int SharedVariable = 0;  
}

然后在任何Form中引用这个变量:

int value = GlobalVariables.SharedVariable;

2.属性或字段: 

        可以在主Form中定义一个属性或字段,然后从其他Form中访问它

public partial class MainForm : Form  
{  
    private int sharedVariable;  
  
    public int SharedVariable  
    {  
        get { return sharedVariable; }  
        set { sharedVariable = value; }  
    }  
}

然后在其他Form中这样引用:

MainForm mainForm = new MainForm();  
int value = mainForm.SharedVariable; // 或者 mainForm.sharedVariable; 如果属性是public的

3.使用静态类:

        创建一个静态类来存储和管理全局变量。静态类的一个好处是,你不需要创建类的实例就可以访问它的静态成员。

public static class SharedVariables  
{  
    public static int SharedVariable { get; set; }  
}

然后在任何Form中引用这个变量:

int value = SharedVariables.SharedVariable;

4.通过接口:

        如果你希望有一种更结构化的方式来在不同Form之间共享数据,你可以定义一个接口,然后让含有你需要的数据的Form实现这个接口。

public interface IDataSharable  
{  
    int SharedVariable { get; set; }  
}

然后在需要共享数据的Form中实现这个接口。其他Form可以通过这个接口来访问数据。

public partial class DataSharingForm : Form, IDataSharable  
{  
    public int SharedVariable { get; set; }   
}  
``` 然后在另一个Form中这样引用:  
```csharp   
IDataSharable sharable = new DataSharingForm();   
int value = sharable.SharedVariable;   
``` 这种方式使你的代码更清晰、更易于维护,并且符合面向对象的设计原则。
01-19 16:36