У меня была такая же проблема, и после того, как я последовал за шагами @Stephen Muecke, я понял, что проблема вызвана тем, что мои входы были отключены (я отключил их с помощью JQuery на готовом документе), как вы можете видеть здесь: How я отправляю отключенный ввод в ASP.NET MVC? . В конце я использовал только для чтения, а не для отключенного атрибута, и все значения были успешно отправлены контроллеру.
Чтобы следовать рекомендациям Microsoft и обеспечить поддержку высокого разрешения для вашего приложения, вы должны изменить несколько вещей. Прежде всего, в вашем файле Designer формы измените AutoScaleDimensions на AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
. И AutoScaleMode - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
.
В приложении просто используйте Application.SetCompatibleTextRenderingDefault(false);
Я также добавил небольшую поправку для установки ClientSize формы. AdjustClientWidthToDPIScale () . В зависимости от масштаба DPI ширина формы клиента изменяется в соответствии с фактором DPI.
Весь код указан ниже.
Файл App.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.1"/>
</startup>
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
</System.Windows.Forms.ApplicationConfigurationSection>
</configuration>
Код формы:
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace FormTestLib
{
public partial class ValidatingSplash : Form
{
public ValidatingSplash()
{
InitializeComponent();
AdjustClientWidthToDPIScale();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
this.CenterToParent();
}
private void AdjustClientWidthToDPIScale()
{
double dpiKoef = Graphics.FromHdc(GetDC(IntPtr.Zero)).DpiX / 96f;
int compansatedWidth = (int)(ClientSize.Width * dpiKoef);
this.ClientSize = new Size(compansatedWidth, this.ClientSize.Height);
}
[DllImport("User32.dll")]
private static extern IntPtr GetDC(IntPtr hWnd);
}
}
Дизайнер форм [ 1121]:
namespace FormTestLib
{
partial class ValidatingSplash
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ValidatingSplash));
this.lblValidating = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// lblValidating
//
this.lblValidating.Anchor = System.Windows.Forms.AnchorStyles.None;
this.lblValidating.AutoSize = true;
this.lblValidating.Location = new System.Drawing.Point(58, 45);
this.lblValidating.Name = "lblValidating";
this.lblValidating.Size = new System.Drawing.Size(166, 13);
this.lblValidating.TabIndex = 7;
this.lblValidating.Text = "Validating cached credentials...";
//
// ValidatingSplash
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(274, 104);
this.ControlBox = false;
this.Controls.Add(this.lblValidating);
this.Font = new System.Drawing.Font("Segoe UI", 8.25F);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
//this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "ValidatingSplash";
this.Text = "Validating Credentials";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label lblValidating;
}
}
Код приложения :
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
ValidatingSplash Splash = new ValidatingSplash();
Splash.ShowDialog();
}