怎么用C#判断浏览者的分辨率呢?

BossFriday 2003-10-16 05:49:13
由于显示的布局的问题,我需要判断显示者屏幕的分辨率。
然后才做一个偏移量,来解决不同分辨率下,正常显示的问题。
(web应用程序)
小弟知道的太少了。
望高手指点。
100分,快没分了。好郁闷!
...全文
94 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
BossFriday 2003-10-17
  • 打赏
  • 举报
回复
比较急了。
请大家帮帮我啊。
BossFriday 2003-10-17
  • 打赏
  • 举报
回复
我用的是webfrom. win程序这里用不了把?
我水平很差。基本上没写过什么win程序。
shajie 2003-10-17
  • 打赏
  • 举报
回复
rect = Screen.GetWorkingArea ( this ) ;
不好意思,把上句该为
rect = Screen.GetWorkingArea(rect);
BossFriday 2003-10-17
  • 打赏
  • 举报
回复
可惜不懂vb.net大概意思知道。但是我不知道用C#怎么写。
而切我也不太懂javascript.
请大家帮帮我把。
谢谢。
shajie 2003-10-17
  • 打赏
  • 举报
回复
using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
public class Form1 : Form
{
private Button button1 ;
private System.ComponentModel.Container components = null ;

public Form1 ( )
{
InitializeComponent ( ) ;
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if ( components != null )
{
components.Dispose ( ) ;
}
}
base.Dispose ( disposing ) ;
}

private void InitializeComponent ( )
{
this.button1 = new Button ( ) ;
this.SuspendLayout ( ) ;
this.button1.Location = new System.Drawing.Point ( 144 , 96 ) ;
this.button1.Name = "button1" ;
this.button1.TabIndex = 0 ;
this.button1.Text = "得到机器的分辨率" ;
this.button1.Size = new System.Drawing.Size ( 140 , 50 ) ;
this.button1.Location = new System.Drawing.Point ( 75 , 90 ) ;
this.button1.Click += new System.EventHandler ( this.button1_Click ) ;
this.ClientSize = new System.Drawing.Size ( 292 , 273 ) ;
this.Controls.Add ( button1 ) ;
this.Name = "Form1" ;
this.Text = "用Visual C#获得机器的分辨率!" ;
this.ResumeLayout ( false ) ;
}

static void Main ( )
{
Application.Run ( new Form1 ( ) ) ;
}

private void button1_Click ( object sender , System.EventArgs e )
{
file://创建一个矩形对象
Rectangle rect = new Rectangle ( ) ;
file://通过一个函数对这个矩形对象赋值,这些值就是屏幕的工作区域
rect = Screen.GetWorkingArea ( this ) ;
MessageBox.Show ( "本机器的分辨率是" + rect.Width.ToString ( ) + "*" + rect.Height.ToString ( ) ) ;

}
}
BossFriday 2003-10-17
  • 打赏
  • 举报
回复
我要得到当前浏览者的分辨率Width的值。
wevForm中不能直接获得这个值吗??
kandyasp 2003-10-17
  • 打赏
  • 举报
回复
javascript可以做到的
孟子E章 2003-10-17
  • 打赏
  • 举报
回复
vb.net版本的,看思路,自己改下

检测客户端显示器分辨率、浏览器类型和客户端IP


下面的代码实现了检测客户端显示器分辨率、浏览器类型和客户端IP的功能。你可以把客户端信息保存到Session,ViewState等中以便在其它的页面直接使用。

ClientPeek.aspx

<%@ Page language="vb" EnableViewState="false" Codebehind="ClientPeek.aspx.vb"
AutoEventWireup="false" Inherits="aspxWeb.ClientPeek"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>检测客户端显示器分辨率、浏览器类型和客户端IP</title>
<META http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta content="Microsoft Visual Studio 7.0" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="【孟子E章】:http://xml.sz.luohuedu.net/" name="CopyRight">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body id="MyBody" MS_POSITIONING="GridLayout" runat="server">
<form id="browserpeek" runat="server">
<asp:label id="Label1" runat="server"></asp:label></form>
</body>
</HTML>

ClientPeek.aspx.vb

Imports System

Public Class ClientPeek
Inherits System.Web.UI.Page
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents MyBody As System.Web.UI.HtmlControls.HtmlGenericControl


#Region " Web 窗体设计器生成的代码 "

'该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

'注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
Dim Button1 As New System.Web.UI.WebControls.Button
If Not Me.IsPostBack Then
Dim btnW As New System.Web.UI.HtmlControls.HtmlInputHidden
Dim btnH As New System.Web.UI.HtmlControls.HtmlInputHidden
Button1.ID = "Button1"
btnW.Name = "WidthPixel"
btnW.ID = "WidthPixel"
btnH.Name = "HeightPixel"
btnH.ID = "HeightPixel"
Me.FindControl("browserpeek").Controls.Add(btnW)
Me.FindControl("browserpeek").Controls.Add(btnH)
Me.FindControl("browserpeek").Controls.Add(Button1)
Dim scriptString As String = ""
scriptString += "document.browserpeek.WidthPixel.value=window.screen.width;"
scriptString += "document.browserpeek.HeightPixel.value=window.screen.height;"
Me.RegisterOnSubmitStatement("Meng", scriptString)
Me.MyBody.Attributes.Add("onload", "document.browserpeek.Button1.click();")
Else
Me.MyBody.Attributes.Remove("onload")
If Me.FindControl("browserpeek").Controls.Contains(Button1) Then
Me.FindControl("browserpeek").Controls.Remove(Button1)
Button1.Dispose()
End If
Dim strLabel As New System.Text.StringBuilder
Dim bc As HttpBrowserCapabilities = Request.Browser
strLabel.Append("您的浏览器的分辨率为:")
strLabel.Append(Request.Form("WidthPixel"))
strLabel.Append("×")
strLabel.Append(Request.Form("HeightPixel"))
strLabel.Append("<hr color='#000099'>")
strLabel.Append("浏览器基本信息:<br>")
strLabel.Append("Type = " & bc.Type & "<br>")
strLabel.Append("Name = " & bc.Browser & "<br>")
strLabel.Append("Version = " & bc.Version & "<br>")
strLabel.Append("Major Version = " & bc.MajorVersion & "<br>")
strLabel.Append("Minor Version = " & bc.MinorVersion & "<br>")
strLabel.Append("Platform = " & bc.Platform & "<br>")
strLabel.Append("Is Beta = " & bc.Beta & "<br>")
strLabel.Append("Is Crawler = " & bc.Crawler & "<br>")
strLabel.Append("Is AOL = " & bc.AOL & "<br>")
strLabel.Append("Is Win16 = " & bc.Win16 & "<br>")
strLabel.Append("Is Win32 = " & bc.Win32 & "<br>")
strLabel.Append("支持 Frames = " & bc.Frames & "<br>")
strLabel.Append("支持 Tables = " & bc.Tables & "<br>")
strLabel.Append("支持 Cookies = " & bc.Cookies & "<br>")
strLabel.Append("支持 VB Script = " & bc.VBScript & "<br>")
strLabel.Append("支持 JavaScript = " & bc.JavaScript & "<br>")
strLabel.Append("支持 Java Applets = " & bc.JavaApplets & "<br>")
strLabel.Append("支持 ActiveX Controls = " & bc.ActiveXControls & "<br>")
strLabel.Append("CDF = " & bc.CDF & "<br>")
strLabel.Append("W3CDomVersion = " + bc.W3CDomVersion.ToString + "<br>")
strLabel.Append("UserAgent = " + Request.UserAgent + "<br>")
strLabel.Append("UserLanguages = " + Request.UserLanguages(0).ToString + "<br>")
strLabel.Append("<hr color='#000099'>")
strLabel.Append("客户端计算机基本配置:<br>")
strLabel.Append("UserHostName = " + Request.UserHostName + "<br>")
strLabel.Append("UserHostAddress = " + Request.UserHostAddress + "<br>")
Label1.Text = strLabel.ToString()
End If
End Sub

End Class


维她奶 2003-10-17
  • 打赏
  • 举报
回复
如果是webFrom的话用javascript好象可以
BossFriday 2003-10-17
  • 打赏
  • 举报
回复
我怎么没有这个命名空间呢?(web应用程序)
System.Windows.Forms (在 System.Windows.Forms.dll 中)
dibov 2003-10-17
  • 打赏
  • 举报
回复
代码文件中ASP.NET的服务端执行的.
可以在"引用"中增加System.Windows.Forms这个命名空间.也可以编写代码.但得到的
应该是服务端的数据吧?!

BossFriday 2003-10-17
  • 打赏
  • 举报
回复
我的WebFrom里没有System.Windows.Forms这个命名空间。到底是win和Web本身的区别。
还是我这里出了什么问题。
好烦。。。。。
BossFriday 2003-10-17
  • 打赏
  • 举报
回复
WebFrom里有System.Windows.Forms这个命名空间吗?
我这没有。
只有在win 里才有。
好急啊。。。。
shajie 2003-10-17
  • 打赏
  • 举报
回复
System.Data.DataSet ds=new DataSet();
这句话是多余的
shajie 2003-10-17
  • 打赏
  • 举报
回复
其实只要有下面这几句就可以了
private void Button1_Click(object sender, System.EventArgs e)
{
System.Data.DataSet ds=new DataSet();

Rectangle rect = new Rectangle();
rect = Screen.GetWorkingArea(rect);
this.Label1.Text=rect.Width.ToString();

}
shajie 2003-10-17
  • 打赏
  • 举报
回复
不是啊,在webform一样可以实现的,我已经测试通过了。。。。
BossFriday 2003-10-17
  • 打赏
  • 举报
回复
我用javescript:document.browserpeek.input1.value=window.screen.width;
实现判断分辨率。
然而在.net中是先执行:private void Page_Load(object sender, System.EventArgs e)中的程序,再去执行.aspx的代码。
这样就导致我不能在Page_Load中用
if(input1.value==“800”)
{
程序1;
}
else
{
程序2;
}
因为程序先把Page_Load中代码全部执行完,在去做其他的事情。
所以这个时候input1.value实际上是没值的。
请问这个问题怎么解决?在Page_Load中能不能先用javascript判断出分辨率。
然后获得这个值后,继续Page_Load里的操作呢?
CanTop 2003-10-16
  • 打赏
  • 举报
回复
用SCREENS类!!!!
Screen[] screens = Screen.AllScreens;
System.Drawing.Rectangle area = screens[0].Bounds;
area.Width和Height就是分辨率了
BossFriday 2003-10-16
  • 打赏
  • 举报
回复
由于我做的页面全部是独立的模块。
首页是一个大白板。
可通过后台选择要发布的模块,以及设定其大小和位置。
个模块的位置,大小的信息全部记录在数据库中。可通过拖拽,实现其位置和打小的修改。
但是,这样做,我只能写成绝对的位置。所以在不同的分辨率下就不能保证它显示在正中了。
所以,我必须判断浏览者的分辨率。以保证不同分辨率下的正常显示。
LineCorner 2003-10-16
  • 打赏
  • 举报
回复
web应用程序:
用CSS控制就可以了!
加载更多回复(1)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧