事件

时间:2017-10-20 10:49:54

标签: c# winforms visual-studio

我得到了#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)),我尽可能地尝试了!我不明白为什么会这样做);谢谢你的帮助,希望我解释得很好..

1 个答案:

答案 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]