我得到了#34; LogInform"形成。它有一些标签,两个文本框(用户名和密码)。和一个按钮"登录"。形式的大小是(1149,847)。
当用户点击按钮时,我有一个SQL函数,用于检查用户是否存在于数据库中。
//log in to user
private void bunifuThinButton21_Click(object sender, EventArgs e)
{
if(ConsoleApp2.UsersDB.userExists(this.userName.Text,this.passWord.Text))
{
this.Hide();
}
else
{
bunifuThinButton22.Visible = false;
wrongUser.Visible = true;
timer2.Enabled = true;
}
}
和SQL函数(userExists):
public static bool userExists(string userName,string passWord)
{
DataTable d1;
string com = "SELECT * FROM users where user_name='" + userName + "'AND user_password='"+passWord+"'";
d1 = oledbhelper.GetTable(com);
if (d1.Rows.Count == 0)
{
return false;
}
return true;
}
点击之后,除了一件事之外,一切都会变得如此 - 窗口自身变小,没有代码可以在点击后使窗口变小。我不明白为什么会这样做。 对于那些不明白我的意思的人,我制作了20秒的视频(我在那里开始表格并输入一些不正确的名字和密码,然后按下按钮):youtube vid
我试图设置" MinumumSize"使用常规大小的数字,我试着设置" AutoSize"为了假,我试着在窗口变小之后设置窗口的大小(logInForm.size = new size(x,y)),我尽可能地尝试了!我不明白为什么会这样做);谢谢你的帮助,希望我解释得很好..
答案 0 :(得分:3)
在Windows显示设置中启用了布局缩放的高DPI显示器时,表单大小会发生变化。当您的应用程序将任何以WPF为目标的DLL加载到内存中时,Winforms DPI自动缩放将被重置(在Visual Studio输出控制台发生时检查它)。例如,当加载PresentationCore.dll或PresentationFramework.dll时,缩放将被重置。
您可以创建覆盖dpiAwareness设置的app.manifest文件:
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiAware>
</windowsSettings>
</application>
... but this won't play together with ClickOnce manifest:
如果清单文件中有关于dpi-awareness的标记,则无法安装ClickOnce已发布的应用程序。这不是ClickOnce明确支持的内容。因此,您可能需要排除用于ClickOnce部署的DPI感知部分。
解决方案是将DisableDpiAwareness属性添加到 Properties / AssemblyInfo.cs 文件中:
// Disable Dpi awareness in the application assembly.
// Add reference to WindowsBase.dll
[assembly: System.Windows.Media.DisableDpiAwareness]