マンガでよめる痔のこと・薬のこと

ASP.NETでテキストボックス内のIMEのモードを
ひとつは全角カナ、ひとつは半角英数のような感じで
プログラムで制御する方法を教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

こちらこそ言葉足らずだったでしょうか。



今までの回答は全て、Webフォーム(ASP.NET)での回答をしていますよ。
WindowsForm(Form1.vb)の話ではありません。

下記は、Webフォーム(ASP.NET)でのTextBox1(HTML上はINPUTタグ)にIME-MODEをオン、
TextBox2(HTML上はINPUTタグ)にIME-MODEを不可にした場合の方法です。

1).aspxファイルのデザインにてTextBox1、TextBox2を配置します。

2).aspx.vbファイルにページロードイベントにて下記のコードを記述すれば、IMEの制御が設定されます。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
TextBox1.Style.Add("ime-mode", "active")
TextBox2.Style.Add("ime-mode", "disabled ")
End Sub

それが今までの回答です。


もしかして想定しているイメージと異なるのでしょうか?
サーバーサイドでのコーディングをせずに行いたいと言うことでしょうか?
であれば、スタイルシートで制御させます。

1).aspxファイル内に書きのスタイルシートタグを埋め込みます。
<style type="text/css">
<!--
.ime-mode-active { ime-mode:active; }
.ime-mode-disabled { ime-mode: disabled; }
-->
</style>

2).
TextBox1のCssClassプロパティに"ime-mode-active"を設定します。
TextBox2のCssClassプロパティに"ime-mode-disabled"を設定します。

回答になっていますでしょうか?
    • good
    • 0
この回答へのお礼

ご回答有難う御座います!!
見事に思ったとおりに出来ました。
なにぶん初心者でして、書き込む場所を間違えておりました。
ページロードイベントに入れればよかったんですね・・。
情けない・・・。
本当に親切に最後まで有難う御座いました!

お礼日時:2007/06/28 09:54

> この方法はVBでしたので出来ませんでた。


> ASP.NETでの方法を探しております。

上記内容ですと、言葉の意味を間違えられておられるようですので説明します。
ASP.NETはアーキテクチャであり言語はありません。
VB.NETもASP.NETの1つです。
VB.NETでないということは、C#と言うことでしょうか?

C#であれば、最後にセミコロンが付くだけの違いです。
TextBox1.Style.Add("ime-mode", "active");
TextBox2.Style.Add("ime-mode", "disabled ");

この回答への補足

こちらの説明不足、及び理解不足の為
せっかく回答頂いているにも関わらず
ご迷惑をおかけして申し訳御座いません。

私が知りたいのは
Windowsの方で→aspx.vb
の方で

Form1.vb
の方ではないのです。

説明ベタでスミマセ・・・。

補足日時:2007/06/27 13:24
    • good
    • 1
この回答へのお礼

Windows Webです。

お礼日時:2007/06/27 16:43

#1です。


回答が不十分でしたので補足します。

> 全角カナ

WebではWindowsFormのような細かなIME制御はできませんので「全角カナ」にする事ができません。
ANo1の回答の参考URLにある様に4つのモードの切り替えしか行えません。
    • good
    • 0

IMEのモードの制御でよいでしょうか?



VB.NET2005の場合の記述方法です。
Textbox1.Style.Add("ime-mode", "active")
Textbox2.Style.Add("ime-mode", "disabled ")

参考URL:http://www.htmq.com/style/ime-mode.shtml
    • good
    • 0
この回答へのお礼

ご回答有難う御座いました。
この方法はVBでしたので出来ませんでた。
ASP.NETでの方法を探しております。
こちらもVBの際には参考にさせて頂きます。

お礼日時:2007/06/27 08:34

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q数字のみ入力可

いつもお世話になっております。
ASP.NET、C#、Webで開発しています。
テキストボックスに最初から数字しか入力できないようにするにはどうすればいいのですか?
さらにWindowアプリのTextBox1_KeyPressをWeb使えないのでしょうか?

Aベストアンサー

無理せずに、バリデーションコントロールを配置するといいです。
数値以外をいれてSubmitすると、JavaScriptでエラーを出せます。

そうしないと、開発速度が遅くなります。
また、バリデーションコントロールを使用することで、
・バリデーションロジックの存在が視覚化できます。
・バリデーションとビジネスロジックの分離ができます。

QTextBoxに半角数字のみの入力しかできないようにしたい

タイトルどおりです。
フォームに貼り付けた、TextBoxに、半角数字のみしか入力できないようにしたいです。
000000~999999までのコード(数字)を入力させるようにするわけですが、そのままだと半角英数も全角も入力できてしまいます。

GrapeCity社製のカスタムコントロール「InputMan」の“Number”を用いると簡単なのですが、これだとカーソルがボックス内の右端にきて、一の位から入力が始まってしまいます。
数字は、ボックス内の左側から入力されていくようにしたいのですが、“Number”だとなんか出来なさそう・・・?
(“Number”で左側から入力できるならそれがいいのですが)

そこで、TextBoxを使うことにしたのですが、TextBoxだと、半角数字のみしか入力できないような制限がかけるのかが、わかりません。

もし、お分かりの方がいらっしゃいましたら、ご教授下さいませ。

Aベストアンサー

コピペですみません。
VB6だと、

Private Sub TextBox_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyBack, Asc("0") To Asc("9"), Asc("-"), Asc(".")
Case &H1 ' Ctrl + A
TextBox.SelStart = 0
TextBox.SelLength = Len(TextBox.Text)
Case &H3 ' Ctrl + C
Case &H16 ' Ctrl + V
Case &H18 ' Ctrl + X
Case &H1A ' Ctrl + Z
Case Else
KeyAscii = 0
End Select
End Sub

で、いかがでしょうか。

コピペですみません。
VB6だと、

Private Sub TextBox_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyBack, Asc("0") To Asc("9"), Asc("-"), Asc(".")
Case &H1 ' Ctrl + A
TextBox.SelStart = 0
TextBox.SelLength = Len(TextBox.Text)
Case &H3 ' Ctrl + C
Case &H16 ...続きを読む

QASP.NETでのメッセージ画面を出すには

はじめまして。
ASP.NET(C#)で、開発をしています。
例えば、内部である処理が終わった後に「完了!」みたいなメッセージ画面をポップアップさせたいと思っております。いろいろ調べてはいるんですが、方法がわかりません。JSを使わなければならないのかなとは思いますが、具体的な方法がわかりません。
よい方法がありましたら、教えていただけないでしょうか。よろしくお願いいたします。

Aベストアンサー

確認は取れていませんが、多分以下のHPの内容でいけると思いますが…。
参考に如何でしょうか。

・ASP.NETでメッセージボックス(OK・NO)の処理について
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=5952&forum=7&6

・Webアプリでメッセージボックスを使いたい
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1644&forum=7&7

QASPで画面間のパラメタ受け渡し

こんばんは。ASP初心者です。
ASPでWEBページの作成を行っています。画面遷移をResponse.Redirect()で行っているのですが、遷移前のページと遷移後のページでパラメタを受け渡したい場合はSession("hoge") = "hogehoge"のようにセッションに入れる以外、何か方法はないでしょうか。リクエスト間でパラメタ渡せればがいいので、セッションを通じて保持しておく必要がないのです。クエリを使用するとアドレス欄に変数の値が見えてしまうのでできれば使いたくありません。

Aベストアンサー

1. Cookieを使う
2. 画面遷移を postで行い、hidden項目に値をセットする (要JavaScript)

私は面倒なのでセッション変数使ってますが、必要なくなればセッションをクリアすれば良いだけだと思います。

Session.Contents("hoge") = Empty

QWebページ上のボタン等の位置を移動したい。

こんにちわ。
いまASP.NETのWebフォームにパネルを置いて,その上にボタンなどのオブジェクトを配置しようとしています。
ところがフォームに直接ボタンを配置するときは,
任意の位置に配置できるのですが,
パネルの上だと任意の位置に配置できません。
VBのようにプロパティでx/y座標を指定しようと思ったのですが,
それらしいプロパティが見当たりません。
どうすれば任意の位置に配置できるでしょうか?
教えてください。よろしくお願いします。

Aベストアンサー

#1 です。

WebForm で何もコントロールを選択していない状態か、新規の WebForm で [レイアウト]-[位置]-[自動配置オプション] を選択。
<オプション> ダイアログの左側 [HTML デザイナ]-[CSS 配置] が開いてる状態になりますので、右側の配置オプションで [ツールボックス、貼り付け、またはドラッグ・・・] にチェックを入れて「絶対配置」を選択して [OK] をクリック。
コレ以降フォームに貼り付けたコントロールは絶対配置になりますので好きな場所に移動できます。

って方法もありますね。

QGridViewにバインドせずにデータを表示する方法

環境:VS2008&VB.NET&ASP
GridViewに手動でテーブルからデータを読みデータバインドせず
DBの値を表示する方法を考えていますがうまくいかず困っています。
(データバインドしたくない理由はデータバインドを行っていると行の挿入や移動ができない認識のためです。)
初心者のため見当違いなことをしているかもしれませんが
それも含めまして質問させていただきます。

質問1
そもそもGridViewでデータバインドせずに手動でデータを表示することは可能でしょうか。

質問2
以下のコードで試しましたが「GridView1.Controls(0).Controls.Add(row1)」でExeptionが発生してしまいました。
手順に不適格な箇所があるのでしょうか。

strSql = "SELECT * FROM Data_Table"
Using connection As New SqlClient.SqlConnection(cnStr)
Dim command As New SqlClient.SqlCommand(strSql, connection)
connection.Open()
Dim dr As SqlClient.SqlDataReader = command.ExecuteReader
While (dr.Read = True)
'データあり
str1 = dr("data1")
str2 = dr("data2")
str3 = dr("data3")
End If
connection.Close()
Dim item1 As DataGridItem
item1 = New DataGridItem(-1, -1, ListItemType.Item)
Dim cell0 As TableCell = New TableCell
item1.Cells.Add(cell0)
Dim cell1 As TableCell = New TableCell
item1.Cells.Add(cell1)
Dim cell2 As TableCell = New TableCell
item1.Cells.Add(cell2)
Dim row1 As New GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal)
row1.Cells.Add(cell0)
row1.Cells.Add(cell1)
row1.Cells.Add(cell2)
GridView1.Controls(0).Controls.Add(row1)
End While
End Using

エラーの内容
System.ArgumentOutOfRangeException はユーザー コードによってハンドルされませんでした。
Message="指定された引数は、有効な値の範囲内にありません。 パラメータ名: index"

お力添えをよろしくお願い致します。

環境:VS2008&VB.NET&ASP
GridViewに手動でテーブルからデータを読みデータバインドせず
DBの値を表示する方法を考えていますがうまくいかず困っています。
(データバインドしたくない理由はデータバインドを行っていると行の挿入や移動ができない認識のためです。)
初心者のため見当違いなことをしているかもしれませんが
それも含めまして質問させていただきます。

質問1
そもそもGridViewでデータバインドせずに手動でデータを表示することは可能でしょうか。

質問2
以下のコードで試しまし...続きを読む

Aベストアンサー

GridViewのRowsコレクションに Addメソッド無いため
コードでGridViewの行の追加が不可能なように思います

DromDownListのItemsなどなら Addメソッドもあるので
バインドしないでも項目の追加が可能だと思われます

SQLServerなら SQLDataSource経由でバインドした方が扱いやすいかもしれませんよ
DataSource経由なら DataSetやDataAdapterなどもウィザードで生成されますし
Tableについても型指定されたDataTableの派生クラスが生成されます

VBに付属のMSDNなどで GridViewのページの中のリンクを参照してみてください

QASP.Net ラベルの内容をすぐに更新したい

大変お世話になっております。
昨年は大変お世話になり、多大なご教授をいただきました。
本年も何卒よろしくお願いいたします。

前々からお聞きしようと思っていたのですが、
処理によってラベルの内容がすぐに反映しないのですが
どのようにすればすぐに反映するのでしょうか?

例えば下記のような場合は、ラベルの内容を初期化したいのですが、
それがされるのは、ボタンの処理後になります。
ボタン処理の前にラベルを更新するにはどうすればいいのでしょうか?

もしかしたら 大変初歩的な質問かもしれませんが、
何卒よろしくお願いいたします。

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles RecDateButton.Click

  Me.Label1.Text = ""

  ここからボタンの処理が開始します

End Sub

Aベストアンサー

クライアント側で、ボタンがクリックされた瞬間に行う。
具体的には、クライアント側でボタンのonclickイベントで行う。

<input type="submit" onclick="document.getElementById('Label1').innerText = ''">

サーバーコントロールにクライアントイベント記述用のOnClientClickプロパティがあるので、そこに書く。
ポストバック時では遅いので、一回目のリクエストのときにonclickイベント付のボタンをブラウザに返す。

protected void Page_Load(object sender, EventArgs e)
{
Button1.OnClientClick = "document.getElementById('" + Label1.ClientID + "').innerText = ''";
}

サーバー側イベントとクライアント側イベントは別物だといことを理解するべし。

ユーザーがボタンをクリック
→ボタンのクライアントイベント(onclick)
→formのsubmit
→ブラウザがPOST
→ASP.NETがポストバックを受け取る
→Page_Loadやらいろいろ
→ボタンのサーバーイベント(Click)
→Renderやらいろいろ
→ブラウザにHTMLを返す
→ブラウザ側の表示

クライアント側で、ボタンがクリックされた瞬間に行う。
具体的には、クライアント側でボタンのonclickイベントで行う。

<input type="submit" onclick="document.getElementById('Label1').innerText = ''">

サーバーコントロールにクライアントイベント記述用のOnClientClickプロパティがあるので、そこに書く。
ポストバック時では遅いので、一回目のリクエストのときにonclickイベント付のボタンをブラウザに返す。

protected void Page_Load(object sender, EventArgs e)
{
Button1.OnClientClick = "docu...続きを読む

QASP.netで、CheckBoxListのSelectedIndexChangedが発生しません!

はじめまして、宜しくお願いします。

ASP.netのC#で開発を行っています。

チェックボックスリストのチェックボックスをチェックした際に、
SelectedIndexChangedイベントが発生しサーバ側で受け取れる
はずだと思っているのですが、全くポストバックされていないようです。

プロパティの「AutoPostBack」はTrueにしています。

ほかに条件はありますでしょうか?
ご存知の方がいらっしゃいましたら、宜しくお願い致します。

Aベストアンサー

もしかして、先ほど、
http://okwave.jp/qa4974802.html
で質問したやり方で、動的に選択項目を生成しているからイベントが発生しないとか?いや、それはないかなぁ。AutoPostBackもTrueみたいですし。

一応、イベント設定方法のやり方は2種類あるのでどちらかお好きな方でおためしください。

方法1:
CheckBoxList を定義している個所に
「OnSelectedIndexChanged="イベント処理用メソッド名"」
を記述する

例:
<asp:CheckBoxList
ID="CheckBoxList1"
runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="CheckBoxList1_SelectedIndexChanged">
</asp:CheckBoxList>

方法2:
Page_Init や Page_Load などのイベントで、
CheckBoxList1.SelectedIndexChanged += new EventHandler(イベント処理用メソッド名);
を記述する

例:
protected void Page_Init(object sender, EventArgs e)
{
  CheckBoxList1.SelectedIndexChanged += new  EventHandler(CheckBoxList1_SelectedIndexChanged);
}

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
  // 選択された時の処理を書く
  if (CheckBoxList1.SelectedIndex > -1)
  {
    Label1.Text = CheckBoxList1.SelectedValue;
  }
  else
  {
    Label1.Text = string.Empty; 
  }
}

また、わからなければご連絡ください。

もしかして、先ほど、
http://okwave.jp/qa4974802.html
で質問したやり方で、動的に選択項目を生成しているからイベントが発生しないとか?いや、それはないかなぁ。AutoPostBackもTrueみたいですし。

一応、イベント設定方法のやり方は2種類あるのでどちらかお好きな方でおためしください。

方法1:
CheckBoxList を定義している個所に
「OnSelectedIndexChanged="イベント処理用メソッド名"」
を記述する

例:
<asp:CheckBoxList
ID="CheckBoxList1"
runat="server"
AutoPo...続きを読む

Qasp.net メッセージボックス表示後の判定

削除ボタン押下時の処理でメッセージダイアログを表示しました。
この後、ダイアログのOKボタンを押された時の処理をコーディングしたいのですが、
どうすれば「OKボタン」or「キャンセル」どちらが押されたか判定できるのですか?
お願いします。

Protected Sub BtnDel_Click(ByVal sender As Object, ByVal e As EventArgs) Handles BtnDel.Click
’ダイアログ表示
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "msgbox", "confirm('" & "削除してもよいですか?" & "');", True)
’OKボタンが押された時削除処理を行う
<ここが不明>
End Sub

Aベストアンサー

http://www.atmarkit.co.jp/fdotnet/asp2review/asp2review09/asp2review09_01.html

Qテキストボックス入力を半角英数字に制限する

よろしくお願いします。

テキストボックスに入力される文字を、
半角英数字(英語の場合は大文字のみ)以外入力できないように制限したいのですが可能でしょうか?

もしくは半角英数字以外が入力された場合アラートを出すようにしたいのですが。。。

また、文字数の制限も可能でしょうか?

第一希望)
12文字以内の半角英数大文字以外入力できないように入力制限する。

第二希望)
12文字以内の半角英数大文字以外入力の文字が入力されている状況でボタン(=CGI実行)を押すと警告のアラートが出る。

第三希望)
半角英数大文字以外入力できないように制限、もしくはアラート表示。

例)
AAAA-1234567 ○(ハイフンを含め12文字以内の半角英数字)
AAAA-123456789 ×(12文字以内でない)
aaaa-1234567 ×(小文字が含まれている)


webサーバー・・・HP-UX
web・・・IE6
開発端末・・・windows2000(Tera Term 使用)

情報をお持ちの方いらっしゃいましたら、
よろしくお願いいたします。

よろしくお願いします。

テキストボックスに入力される文字を、
半角英数字(英語の場合は大文字のみ)以外入力できないように制限したいのですが可能でしょうか?

もしくは半角英数字以外が入力された場合アラートを出すようにしたいのですが。。。

また、文字数の制限も可能でしょうか?

第一希望)
12文字以内の半角英数大文字以外入力できないように入力制限する。

第二希望)
12文字以内の半角英数大文字以外入力の文字が入力されている状況でボタン(=CGI実行)を押すと警告のアラートが...続きを読む

Aベストアンサー

第二希望の条件について。
前提としてチェックするテキストボックスのnameがtxtであった場合の説明をします。
まず、次のようにform開始タグにname="fm"とonsubmit="return checkForm()"を追加します。

<form name="fm" action="********.cgi" method="post" onsubmit="return checkForm()">


次に以下を<head>~</head>に貼り付けることで、JavaScriptによる送信前のチェックが可能です。

---------------------------------------
<script type="text/javascript">
<!--
function checkForm(){
var str = document.fm.txt.value;
if (str.match(/[^A-Z\d\-]/)) {
alert("半角英数字(大文字)しか入力できません");
return false;
}
else if (str.length > 12) {
alert("12文字以内で入力してください");
return false;
}
}
//-->
</script>
---------------------------------------

「ハイフンを含め」と書いているので、ハイフンを入れても有効なようにしました。
また、12文字以内としか書かれていないので0文字でも警告が出ないようになっています。
もし、何も入力されていない場合でも警告を出すならば、次のようにしてください。

---------------------------------------
if (!str) {
alert("何も入力されていません");
return false;
}
else if (str.match(/[^A-Z\d\-]/)) {
alert("半角英数字(大文字)しか入力できません");
return false;
}
else if (str.length > 12) {
alert("12文字以内で入力してください");
return false;
}
---------------------------------------

第二希望の条件について。
前提としてチェックするテキストボックスのnameがtxtであった場合の説明をします。
まず、次のようにform開始タグにname="fm"とonsubmit="return checkForm()"を追加します。

<form name="fm" action="********.cgi" method="post" onsubmit="return checkForm()">


次に以下を<head>~</head>に貼り付けることで、JavaScriptによる送信前のチェックが可能です。

---------------------------------------
<script type="text/javascript">
<!--
function checkForm(){
...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング